Foros del Web » Programando para Internet » PHP »

Mostrar paginados registros SQL

Estas en el tema de Mostrar paginados registros SQL en el foro de PHP en Foros del Web. Hola, tengo una problema mas que nada estético, hago una consulta a una DB, pidiendo alumnos, entonces siempre presento en una tabla los registros, con ...
  #1 (permalink)  
Antiguo 27/11/2013, 23:48
 
Fecha de Ingreso: noviembre-2013
Mensajes: 12
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Mostrar paginados registros SQL

Hola, tengo una problema mas que nada estético, hago una consulta a una DB, pidiendo alumnos, entonces siempre presento en una tabla los registros, con un while añadiendo filas mientras haya registros, el problema es que consulto y son tantos alumnos que se hace demaciada larga la lista y queda mal


he visto en muchas paginas WEB una especie de paginado, que te muestra 10 registros y debajo "1-2-3-4" y al hacerle click en el 2, te muestra los siguientes 10 registros. La verdad no tengo idea como hacer este tipo de cosas, alguien me puede ayudar con un codigo, o un tutorial de la manera mas sencilla para poder hacerlo?
  #2 (permalink)  
Antiguo 28/11/2013, 02:22
Avatar de Verkia  
Fecha de Ingreso: noviembre-2013
Ubicación: Alicante
Mensajes: 26
Antigüedad: 10 años, 5 meses
Puntos: 2
Respuesta: Mostrar paginados registros SQL

Si estás utilizando Dreamweaver incorpora una opción para hacer la paginación. Y si no, la idea es que al hacer la consulta pongas un LIMIT que vaya cambiando. De todos modos "paginacion php tutorial" en Google da infinitos resultados :D

Un saludo
  #3 (permalink)  
Antiguo 28/11/2013, 02:49
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Mostrar paginados registros SQL

Se comprueba cuántas filas totales tiene la tabla. Eso y sabiendo el número de filas por pagina, sabes cuántas páginas tienes que hacer. El número de página lo pasaremos por GET, es decir, en la url mediante enlaces. Si no llega ninguno en la url, asumimos que está en la página 1. También comprobamos que el número de página no se sale de los límites (la más pequeña es uno, y la más grande es el total de páginas que acabamos de calcular.

Algunos usan dos consultas para obtener el total de registros, y en una usan el SELEC COUNT(*) FROM TABLA; pero no es la mejor solución. mysql permite que en cualquier consulta saber el total de filas de una tabla, aunque tenga un WHERE o un LIMIT que excluya filas en la consulta. Eso es así porque el motor de mysql sabe ese dato sin necesidad de consultarlo, mirando sus registros internos, La orden es SQL_CALC_FOUND_ROWS , que introducida en cualquier consulta hará que mysql meta ese dato en un registro especial que para consultar hay que ejecutar otra consulta con SELECT FOUND_ROWS(). Esto es mucho más eficiente que ejecutar el COUNT(*).

Para limitar el número de resultados de una consulta, se utiliza LIMIT, que necesita dos argumentos. El primero sirve para decirle a partir de qué número de fila debe empezar a devolver los resultados, y el segundo sirve para indicar el número de filas que nos debe devolver (si los hubiera) a partir de la fila indicada con el parámetro anterior.

Sabiendo todo esto, paginar es sencillo.

Código PHP:
Ver original
  1. <?php
  2.  
  3. $filasPagina=10;
  4. $pagina=max(0,(int)$_GET["p"]-1);
  5. $offset=$pagina*$filasPagina;
  6. $totalPaginas=ceil($total/$filasPagina);
  7. $pagina=min($totalPaginas,$pagina);
  8.  
  9. $sql = "SELECT SQL_CALC_FOUND_ROWS id, nombre, edad FROM alumno LIMIT $offset, $filasPagina";
  10. $sql2 = "SELECT FOUND_ROWS() as total";
  11.  
  12. $resultado= mysql_query($sql);
  13. $resultado2  = mysql_fetch_assoc(mysql_query($sqlTotal));
  14. $total = (int)$resultado2 ["total"];
  15.  
  16. $alumnos=array();
  17. while ($fila = mysql_fetch_assoc($resultado))
  18. {
  19.     $alumno=array(
  20.         "id"=>$fila["id"],
  21.         "nombre"=>htmlentities($fila["nombre"]),
  22.         "edad"=>$fila["edad"]
  23.     );
  24. }
  25. ?>
  26. <ul>
  27.     <?php foreach ($alumnos as $alumno) { ?>
  28.     <li><?php echo $alumno["id"]." - ".$alumno["nombre"]." - ".$alumno["edad"]; ?></li>
  29.     <?php } ?>
  30. </ul>
  31. <br/>
  32. <?php for( $i=1; $i<=$totalPaginas; $i++) { ?>
  33. <a href="?p=<?php echo $i; ?>"> <?php echo $i; ?> </a>
  34. <?php } ?>

Etiquetas: orden, paginado, paginar, registros
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 07:47.