Hola amigos,
He utilizado el codigo que viene en desarrolloweb.com para dar paginación a una SQL que toma parametros para el web de un formulario. Esto es, relleno un formulario en una página con apellidos y nombre y me manda a una pagina que tiene el codigo de paginación y hasta ahi perfecto. Me encuentra el numero de registros, me calcula el numero de paginas, ... PROBLEMA: cuando paso a otra pagina parece como si reseteara las variables a las que hace referencia el SQL y toma la SQL sin clausula where. He probado con variables globales y nada.
Os paso el codigo por si me podeis ayudar, muchas gracias :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Resultado de la búsqueda</title>
<link REL="StyleSheet" href="../css/estilo.css" type="text/css">
</head>
<body>
<div align="center">
<?
// Nos conectamos con el servidor MySQL
$conexion = mysql_connect("localhost", "root", "")
or die("¡No se ha podido establecer la conexión con el servidor local!");
// Seleccionamos la Base de Datos
$resp = mysql_select_db("test")
or die("¡No se ha podido seleccionar la base de datos yyy!");
// Limito la busqueda
$tamano_pagina = 10;
// Examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $tamano_pagina;
}
$criterio = "";
if ($_POST["apellidos"]!=""){
$txt_criterio = $_POST["apellidos"];
$criterio = "where APELLIDO like '%".$txt_criterio."%' order by idContacto";
}
$sqlquery = "SELECT * FROM pilp2003 " . $criterio;
echo $sqlquery;
/* Notificamos fallo si se produce */
$queryresult = mysql_query($sqlquery) or die("¡No se puede ejecutar la sentencia select!");
$num_total_registros = mysql_num_rows($queryresult);
// Calculo el total de páginas
$total_paginas = ceil($num_total_registros / $tamano_pagina);
// Número de registros total, tamaño de página y la página que se muestra
echo "Número de registros encontrados: " . $num_total_registros . "<br>";
echo "Se muestran páginas de " . $tamano_pagina . " registros cada una<br>";
echo "Mostrando la página " . $pagina . " de " . $total_paginas . "<p>";
// Miro a ver el número total de campos que hay en la tabla con esa búsqueda
$sqlquery = "SELECT * FROM pilp2003 " . $criterio . " limit " . $inicio . "," . $tamano_pagina;
echo $sqlquery . "<p>";
/* Notificamos fallo si se produce */
$queryresult = mysql_query($sqlquery) or die("¡No se puede ejecutar la sentencia select!");
$num_total_registros = mysql_num_rows($queryresult);
echo "<table border = '1'> \n";
echo "<tr> \n";
// Para los del ejemplo
echo "<td>IdContacto</td> \n";
echo "<td>Nombre</td> \n";
echo "<td>Apellido</td> \n";
echo "<td>DNI</td> \n";
echo "<td>Teléfono</td> \n";
echo "<td>Teléfono1</td> \n";
echo "<td>Móvil</td> \n";
echo "</tr> \n";
while ($fila = mysql_fetch_object($queryresult))
{
echo "<td>".$fila->IdContacto."</td> \n";
echo "<td>".$fila->NOMBRE."</td> \n";
echo "<td>".$fila->APELLIDO."</td> \n";
echo "<td>".$fila->DNI."</td> \n";
echo "<td>".$fila->TELEFONO."</td> \n";
echo "<td>".$fila->TELEFONO1."</td> \n";
echo "<td>".$fila->TELMOVIL."</td> \n";
echo "</tr> \n";
}
echo "</TABLE>";
// Liberamos
mysql_free_result($queryresult);
// Cerramos la conexión con la BD
mysql_close($conexion);
echo "<p>";
//muestro los distintos índices de las páginas, si es que hay varias páginas
if ($total_paginas > 1){
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i)
//si muestro el índice de la página actual, no coloco enlace
echo $pagina . " ";
else
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo "<a href='busqueda.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
//echo "<a href='busqueda.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
}
}
?>
</div>
</body>
</html>