Estás en: Paginar Resultados : Paginar los resultados
Para paginar los resultados de un select que no necesita parámetros, hay que hacer lo siguiente:
- Controlar si entramos en la página 1 o en posteriores
- Crea variables:
-> Número total de registros
-> Cantidad de resultados por página
-> Registro de inicio
-> Crear SQL con LIMIT inicio, cantidad
- Listar resultados
- Mostrar navegador
Es recomendable enviar estos datos por GET, porque al paginar y al ir alante y atrás, si lo cogemos por POST
se perdería
<table width="450" border="1" align="center"> <tr> <td width="150">NUMERO ID</td> <td width="150">POBLACION</td> <td width="150">CONTINENTE</td> </tr> <?php if (!$_GET) { $pagina=1; }else { $pagina=$_GET["pag"]; } // ----------------------- CONSULTA ----------------------- $sql="SELECT p.continente, c.continente_id, p.pais_id, p.pais_poblacion, c.continente_nombre FROM pais p, continente c WHERE p.continente=c.continente_id ORDER BY c.continente_nombre, p.pais_poblacion"; // ----------------------- EJECUCION DE LA CONSULTA ----------------------- $resultado=mysql_query($sql); // TABLA COMPLETA $total_registros=mysql_num_rows ($resultado); // Nos dice cuántos registros hay en total $cantidad_reg=3; // Cantidad de registros por página $registro_inicio= ($pagina-1) * $cantidad_reg; // Página en la que estamos x el número de registros que mostramos por página. // Esto nos indica en el registro en el que nos tenemos que posicionar. // Definimos de nuevo la consulta SQL LIMITADA $sql.=" LIMIT $registro_inicio, $cantidad_reg"; // Añade la limitación al sql que había antes // Si hay comillas dobles encerrando el select, dentro podemos poner las variables, // sin tener que hacer concatenaciones. // Si el valor es texto, puede ir la variable entre las comillas simples $resultado=mysql_query($sql); if ($resultado) { $fila=mysql_fetch_array ($resultado) ?> <tr> <td><? echo $fila ["pais_id"]?></td> <!--No hay que poner p.pais_id, si no, da error --> <td><? echo $fila ["pais_poblacion"]?></td> <td><? echo $fila ["continente_nombre"]?></td> </tr> <?php while ($fila=mysql_fetch_array ($resultado)) { ?> <tr> <td><? echo $fila ["pais_id"]?></td> <td><? echo $fila ["pais_poblacion"]?></td> <td><? echo $fila ["continente_nombre"]?></td> </tr> <?php } }else { echo mysql_error(); } ?> </table> <div class="paginado"> <? echo paginar ($pagina, $total_registros, $cantidad_reg, "listar_paginado.php?pag="); // Cuando necesitamos que liste dependiendo de un parámetro de búsqueda, porque el // select está parametrizado, habría que ponerlo de la siguiente manera: //echo paginar2 ($pagina, $total_registros, $cantidad_reg, "listar_paginado.php?id=4&pag="); ?> </div><!--paginado -->