Problema con paginacion en categorias de mi pagina web

  • Autor Autor tatekietor
  • Fecha de inicio Fecha de inicio
T

tatekietor

Gamma
Mi problema es el siguiente:
Estoy tratando de poner paginacion en las categorias de mi pagina,pero por algun motivo,se ven los numeros de la paginacion y todo,pero no funciona,cuando voy a uno de los enlaces de la paginacion,no se ve nada. Este es el codigo que he utilizado:

<?php
if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
$conexion=mysql_connect("******","******","******") or die("No se pudo conectar a la base de datos");
mysql_selectdb("******",$conexion);
$result = mysql_query("SELECT COUNT(*) FROM entradas", $conexion);
list($total) = mysql_fetch_row($result);
$tampag = 2;
$reg1 = ($pag-1) * $tampag;
$consulta=mysql_query("select titulo,entrada,fecha,categoria from entradas WHERE categoria like '%$categoria%' ORDER BY idnoticia DESC LIMIT $reg1, $tampag",$conexion) or
die("Problemas en el select:".mysql_error());
while ($dato=mysql_fetch_array($consulta)) {
echo "<div id='post'><h3 class='titulo'><a href='entrada.php?titulo=$dato[titulo]'>",$dato["titulo"], "</h3></a>","<p class=fecha><img src='imagenes/calendario.gif'>",$dato["fecha"]," <img src='imagenes/categoria.gif'>",$dato[categoria],"</p><p class='entrada'>",$dato["entrada"],"</p></div>";
}
function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a href='$enlace$anterior'>&laquo;</a> ";
else
$texto = "<b>&laquo;</b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href='$enlace$i'>$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href='$enlace$i'>$i</a> ";
if ($actual<$total_paginas)
$texto .= "<a href='$enlace$posterior'>&raquo;</a>";
else
$texto .= "<b>&raquo;</b>";
return $texto;
}
echo paginar($pag, $total, $tampag, "categorias.php?categoria=$categoria?pag=");
?>
 
Mira tu codigo ....

PHP:
$pag = 1; // Por defecto, pagina 1

Dices que la variable siempre va ser 1, pero lo que quieres que se ponga 1,2,3 das click en la paginacion ... en ese caso es hacer una condicion de if y else..

algo mas pratico para este caso

PHP:
$pag = (is_numeric($_GET['pag'])) ? $_GET['pag'] : 1; // Por defecto, pagina 1

Espero que le sea de ayuda 😉
 
Te aconsejo que busques script de paginacion completos que existen por la red, yo he usado varios de ellos y funcionan muy bien lo que ahora no se donde los tome
 
gracias por las respuestas,al final lo hice de la siguiente manera:
PHP:
<?php

if (categoria==false) {
$categoria=$_REQUEST[categoria]; }
$link = @mysql_connect("***", "**", "***"); 
mysql_select_db("**", $link); 
 
// maximo por pagina 
$limit = 10; 
 
// pagina pedida 
$pag = (int) $_GET["pag"]; 
if ($pag < 1) 
{ 
   $pag = 1; 
} 
$offset = ($pag-1) * $limit; 
 
 
$sql = "SELECT SQL_CALC_FOUND_ROWS titulo,resumen,fecha,categoria,id,autor,url FROM entradas WHERE categoria LIKE '%$categoria%' ORDER BY id DESC LIMIT $offset, $limit"; 
$sqlTotal = "SELECT FOUND_ROWS() as total"; 
 
$rs = mysql_query($sql); 
$rsTotal = mysql_query($sqlTotal); 
 
$rowTotal = mysql_fetch_assoc($rsTotal); 
// Total de registros sin limit 
$total = $rowTotal["total"]; 
 
?>
 
      
<?php 
         while ($dato = mysql_fetch_assoc($rs)) 
         { $url=$dato["url"];
	echo "<div id='post'><h3 class='titulo'><a href='entrada.php?titulo=$dato[titulo]'>",$dato["titulo"], "</h3></a>","<p class=fecha><img src='imagenes/calendario.gif'>",$dato["fecha"]," <img src='imagenes/categoria.gif'>",$dato[categoria],"<img src='imagenes/autor.gif'>$dato[autor]","</p><p class='entrada'>",$dato["resumen"],"...<font color='red'>Para leer la entrada completa click </font><a href='$url'>Aqui</a></p></div>";
} 
      ?>
 
      
<center><p><?php 
         $totalPag = ceil($total/$limit); 
         $links = array(); 
         for( $i=1; $i<=$totalPag ; $i++) 
         { 
            $links[] = "pagina <a href=\"?pag=$i\">$i</a>";  
         } 
         echo implode(" - ", $links); 
      ?></p>
</center>
 
Atrás
Arriba