Foros del Web » Programando para Internet » PHP »

Problemas con paginación

Estas en el tema de Problemas con paginación en el foro de PHP en Foros del Web. Hola a todos, Mi problema es que tengo que paginar en PHP unos datos producto de una consulta SQL, pero siempre (y he usado varios ...
  #1 (permalink)  
Antiguo 29/05/2007, 13:38
 
Fecha de Ingreso: mayo-2007
Mensajes: 19
Antigüedad: 17 años
Puntos: 1
Problemas con paginación

Hola a todos,

Mi problema es que tengo que paginar en PHP unos datos producto de una consulta SQL, pero siempre (y he usado varios scripts) logro paginar la primera página correctamente, es decir establezco el numero de rows a mostrar y el cálculo de las páginas a paginar (el típico: <<primero [1][2][3]...ultimo>>), pero al hacer click sobre [2], por ejemplo pareciera que el SELECT se aplicara a toda la base y NO a mi query deseado.

El script que uso:
Código PHP:
<?php 
$link 
mysql_connect("myhost.com""myuser""mypass"); 
mysql_select_db("mydb"$link); 

if (!isset(
$pag)) $pag 1// Por defecto, pagina 1

//'$_REQUEST[localidades]%' proviene de un menú desplegable
//de una página anterior enviado via "submit" con el método "post"
$result mysql_query("SELECT COUNT(*) from miembros where localidad like '$_REQUEST[localidades]%'"$link); 
list(
$total) = mysql_fetch_row($result);
$tampag 3//He establecido 3 para efectos de pruebas
$reg1 = ($pag-1) * $tampag;
$result mysql_query("select * from socios where localidad like '$_REQUEST[localidades]%' LIMIT $reg1, $tampag"$link);
   
if (
mysql_num_rows($result)){ 
  echo 
"<table border = '1'> \n"
  echo 
"<tr><td>Nombre</td><td>Apellidos</td></tr> \n"
  while (
$row = @mysql_fetch_array($result)) { 
    echo 
"<tr><td>".$row["nombre"].
      
"</td><td>".$row["apellidos"]."</td></tr> \n"
  }
  echo 
"</table> \n"
}
else
  echo 
"¡ No se ha encontrado ningún registro !";
  
/******************************************************/
/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * Devuelve un texto que representa la paginacion
 */
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"busqueda.php?pag=");
?>
El asunto es que de alguna manera la primera paginación la arroja bien, pero luego a las siguientes parece perder los criterios de la búsqueda y hace la paginación pero en base a toda la base de datos. Ej:

Cita:
(resultados de la búsqueda)

Nombre | Apellidos
Juan | Gonzalez
Pedro | Pérez
Alfonso | Giménez

[1][2][3]
Si hago click sobre [2]

Cita:
(resultados de la búsqueda)

Nombre | Apellidos
Antonio | Gonzalez
Amelesio | Pérez
Alfonso | Giménez

[1][2][3][4][5][6][7][8][9][10]
Es decir.. pagina TODA la db (nótese que no pone rojo el enlace [2])

¿Alguien puede darme una luz a ver donde está el error?

Gracias de antemano
  #2 (permalink)  
Antiguo 30/05/2007, 05:18
 
Fecha de Ingreso: mayo-2007
Mensajes: 19
Antigüedad: 17 años
Puntos: 1
Re: Problemas con paginación

Bueno, ya lo he resuelto...

Mi problemilla era simple y tonto... los datos del query venian de un formulario en una pag anterior, por lo que al no estar en la misma pag el paginador buscaba el link de la pag 2 en esa misma pagina y logicamente no encontraba criterios de búsqueda... lo solucioné colocando formulario y paginador en la misma pagina.

Bueno... gracias por leer, espero tener mas conocimientos para aportar cuando sepa.

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:55.