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\">«</a> ";
else
$texto = "<b>«</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\">»</a>";
else
$texto .= "<b>»</b>";
return $texto;
}
echo paginar($pag, $total, $tampag, "busqueda.php?pag=");
?>
Cita:
Si hago click sobre [2](resultados de la búsqueda)
Nombre | Apellidos
Juan | Gonzalez
Pedro | Pérez
Alfonso | Giménez
[1][2][3]
Nombre | Apellidos
Juan | Gonzalez
Pedro | Pérez
Alfonso | Giménez
[1][2][3]
Cita:
Es decir.. pagina TODA la db (nótese que no pone rojo el enlace [2])(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]
Nombre | Apellidos
Antonio | Gonzalez
Amelesio | Pérez
Alfonso | Giménez
[1][2][3][4][5][6][7][8][9][10]
¿Alguien puede darme una luz a ver donde está el error?
Gracias de antemano