Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/07/2003, 13:29
Zertiko
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Paginación resultados

Hola, antes que nada gracias desde ya!!!

El código que está situado más abajo es el que utilizo para la paginación de los resultados de mis busquedas en la db, el problema es que cuando ha encontrado por ejemplo 7 registros cuando el limite es 4 por página, me crea el indice de paginación correctamente pero cuando avando en el indice dando a un número del indice o dandole al enlace Siguiente >> al abrir dicha página en el nuevo documento me saca todos los registros de la tabla con todos los indices necesarios para la paginación, mi pregunta es porque se produce este error... , he revisado el código y la verdad no me lo explico si en un principio hace bien la paginación porque cuando avanzo por dicha paginación se estrope más adelante.


Espero haberme explicado claramente... a continuación pego el código.


Código PHP:
  # definimos las variables iniciales de la paginación
                   
if (!isset($pg))
                   
$pg 0// $pg es la pagina actual
                   
$cantidad=4// cantidad de resultados por página
                   
$inicial $pg $cantidad;
                  
                 
                  
// se concatena la secuencias de campo LIKE '%palabra%' AND .. con el SQL
                  // si hace falta mas parámetros o condiciones .. añadir al final ...
                  
$sql "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo LIMIT $inicial,$cantidad";

                   
                                                
                   
# establecemos el criterio de seleccion
                   
$resultado mysql_query($sql$conexion) or die ("Error en la consulta:\n<br><b>$sql</b><br>\nMySQL dice: ".mysql_error());
                   
                   
                   
# contamos todos los registros de la tabla
                   
$contar "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo"
                   
$contarokmysql_query($contar$conexion);
                   
$total_records mysql_num_rows($contarok);
                   
$pages intval($total_records $cantidad);


                   
# CREAMOS UNA CABEZERA DE UNA TABLA (codigo HTML)

                   
echo "<table width='90%'cellpadding='0' cellspacing='0' align=center bgcolor='#EFEFEF' border=0>";

                   
# establecemos un bucle que recoge en un array
                   # cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
                   # utilizamos en esta ocasión <<myslq_fetch_array>>
                   # recuerda que esta ultima función devuelve un array escalar
                   # y otro asociativo con los resultados
                   
                   
while ($encontrados mysql_fetch_array($resultado)){
                   echo 
"<tr><td height='20'>&nbsp;</td></tr>";
                   echo 
"<tr><td height='20' valign='middle' bgcolor='#003366'>&nbsp;<font face='arial' size='1'><strong><a href='".$encontrados['Url']."'>".$encontrados['Titulo']."</a></strong></font></td></tr>";
                   echo 
"<tr><td></td></tr>";
                   echo 
"<tr><td><font face='arial' size='1'><strong>".$encontrados['Descripcion'].".</strong></font></td></tr>";
                   echo 
"<tr><td><br></td></tr>";
                   }
                   echo 
"</table>";
                   
                  
                  
# filtramos mediante un if (){...}else{... que no haya menos de 11 registros para no hacer la paginación 
                  
if ($pages 1){
                  echo 
"";
                  }else{                    
                  
                  
# creando los enlaces de paginación
                  
echo "<br><div align='center'><font face='Tahoma' size='1' color='#003366'><strong>Página de resultados</strong></font></div><div align='center'>";
                  if (
$pg <> 0)
                  {
                  
$url $pg 1;
                  echo 
"<a href='".$_SERVER[PHP_SELF]."?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>&laquo;Anterior</strong></font></a>&nbsp;";
                  }
                  else {
                  echo 
"";
                  }
                  for (
$i 0$i<($pages 1); $i++) {
                  if (
$i == $pg) {
                  echo 
"<font face='Tahoma' size=1 color='#003366'><strong>".($i+1)."&nbsp;</strong></font>";
                  }
                  else {
                  echo 
"<a href='".$_SERVER[PHP_SELF]."?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".($i+1)."</strong></font></a>&nbsp;";
                  }
                  }
                  if (
$pg $pages) {
                  
$url $pg 1;
                  echo 
"<a href='".$_SERVER[PHP_SELF]."?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>Siguiente&raquo;</strong></font></a>";
                  }
                  else {
                  echo 
" ";
                  }
                  echo 
"</div>";
                  
                  }
                  
                  
# comprobamos que no nos ha devuelto ningun resultado
                  
                  
if($vacio=mysql_num_rows($contarok)==0){
                   echo 
"<br><br><font face='arial' size='1'><strong>No se han encontrado coincidencias con la cadena <font color='#FF0000'>".$BUSCADOR."</font>.</strong></font>";
                   }
                                                         
                                                                                                                   
                  
# cerramos la conexión

                  
mysql_close();
                  
?>