Paginar Resultados con PHP y MySQL

baluart28 Marzo 2005 - 1:00am 23 comentarios
Enviar por Email Imprimir

He observado en distintos foros la pregunta ¿como paginar resultados de una consulta a la Base de Datos? Pues dejamos en la sección descargas un videotutorial con el código de como crearlo haciendo uso de PHP y MySQL, las ventajas de este script son que los links se crean dinámicamente conforme la cantidad de registros de la base de datos, es un paginador numérico al estilo google, nosotros decidimos cuantos registros mostrar por página y es muy facil de adaptar a nuestras consultas. Como manera de hacerlo, el videotutorial muestra como paginar los resultados de la tabla personalizada que creamos en el videotutorial anterior para que muestre un máximo de 3 registros por página.

Cualquier duda o consulta estaremos encantados de responderlas.

Para descargar el código fuente debes iniciar sesión.

Comentarios

Imagen de malom17
malom17

Hola amigos, este código me parece muy interesante, pero tengo un problemilla pq yo ademas de paginar quiero q me lo muestre por columnas osea paginar por columnas. seria este caso:

imagen1 imagen2 imagen3
nombre1 nombre2 nombre3

imagen4 imagen5 imagen6
nombre4 nombre5 nombre6

imagen7 imagen8 imagen9
nombre7 nombre8 nombre9

Alguien me puede echar una imagen, he buscado por todos lados pero no doy con la solucion.
si alquien me puediera ayudar se lo agradecería enternamente jeje.

Imagen de caotico
caotico

como descargo el video tutorial???

Imagen de DavidMR
DavidMR

esta buenisimo

Imagen de GsusKrist007
GsusKrist007

hey balu, excelente funcion.
me ahorraste muchas lineas de codigo, sin embargo tengo un problema (kizas por ke soy neofito en php) no logro hacer ke se mantenga el resultado de el query durante la navegacion entre paginas, es decir luego de hacer el primer query ke trae los datos de la DB muestra los 3 primeros registros (por ke le puse como parametro ke solo mostrara 3 registros por pagina) y luego al dar clck en la siguiente pagina, estos datos se pierden y me muestra una tabla html vacia es decir sin los siguientes registros de la consulta.
no se que estaré haciendo mal, les agradezco de antemano su colaboracion.

Imagen de GsusKrist007
GsusKrist007

AYUDA URGENTE.
la paginacion falla a la hora de ir a la siguiente pagina, es decir solo me muestra los primeros registros, luego se pierde la informacion traida de la DB.
necesito ayuda urgente, soy nuevo en php y debo terminar este proyecto de grado para pasado mañana, es lo ultimo ke me hace falta para terminar.

Imagen de Chilectro
Chilectro

hola como estan necesito una mano urgente ... estoy tratando de poner en este script de paginacion un link vinculado(valga la redundancia) al id del usuario pero no me sale el id :

echo "".$row_rsTablaPersonalizada['clcelular'] . "";
echo "".$row_rsTablaPersonalizada['clemail'] . "";
echo " Ver ";
echo "".$row_rsTablaPersonalizada['status'] . "";
echo "";

Imagen de Anonymous
Anonymous

chido

Imagen de carlosuc99
carlosuc99

Yo no lo entiendo. Tengo una tabla en PHP. Al final del archivo.php copio el codigo del paginador. Configuro la conexion a la base de dator en "SELECT * FROM plan_vuelo ORDER BY flight ASC"; Le pongo la tabla y listo pero me da error "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 3' at line 1" SOCORRO NECESITO LA RESPUESTA CUANTO ANTES

Imagen de Carlos G.
Carlos G.

Bueno, no se entiende el código en los comentarios... :) yo en lo personal utilizo esta clase para paginación php talvez le sirve a alguien.

Saludetes.

Imagen de AYANAMY
AYANAMY

gracias por el aporte

Imagen de ANALLLL
ANALLLL

NECESITO UN EJEMPLO URGENTE!!

Imagen de gabbytaromero
gabbytaromero

ya no existe este material ?

Imagen de msalgadog
msalgadog

Ya no existe el material?

Imagen de baluart
baluart

Tanto el codigo fuente como el videotutorial estan en el mismo archivo zip

Imagen de Balú

Hola malon17, gracias por escribir. Te cuento que puedes lograr lo que buscas, si combinas los códigos de este videotutorial con el de Mostrar resultados en 2 columnas, de igual manera voy a crear un post que explique exacatamente como lograrlo con el código para descargar.
Saludos.

Imagen de Jose
Jose

Estoy tratando de agregar una variable mas que seria numero_pagina y me estoy equivocando en algo que es o como puedo crear la misma.<? php $queryString_resultado1 = "";if (!empty($_SERVER['QUERY_STRING'])) {  $params = explode("&", $_SERVER['QUERY_STRING']);  $newParams = array();  foreach ($params as $param) {    if (stristr($param, "iniciar_consulta") == false &&     stristr($param, "numero_pagina") == false &&        stristr($param, "total_de_resultados") == false) {      array_push($newParams, $param);    }  }  if (count($newParams) != 0) {    $queryString_resultado1 = "&" . htmlentities(implode("&", $newParams));  }}$queryString_resultado1 = sprintf("&total_de_resultados=%d%s", $total_de_resultados,"&numero_pagina=%d%s",$numero_pagina, $queryString_resultado1); ?>    <?php//Creamos la Barra de Navegación//utilizamos la función max para motrar los 50 valores anteriores al valor máximo$pagNum_tmp = max(0, $numero_pagina-50);  for ($pagNum_i=$pagNum_tmp+1;$pagNum_i<=$numero_pagina;$pagNum_i++) {//páginas previas?><a href="<?php printf("%s?iniciar_consulta=%d%s", $currentPage, max(0, $iniciar_consulta - 10), max($pagNum_i-1), $queryString_resultado1); ?>"> <?php echo $pagNum_i; ?></a> <?php } ?><strong><?php// página actualecho $numero_pagina+1; ?></strong><?php  $pagNum_tmp = min($numero_pagina+1+50, $total_paginas);  for ($pagNum_i=$numero_pagina+2;$pagNum_i<=$pagNum_tmp;$pagNum_i++) {  // páginas siguientes?><a href="<?php printf("%s?iniciar_consulta=%d%s", $currentPage, min($totalPages_resultado1, $iniciar_consulta + 10), $queryString_resultado1);  ?>"> <?php echo $pagNum_i; ?></a> gracias

Imagen de Balú

Para empezar la variable $numero_pagina ya existe y es la más importante del script, así que no debes modificarla. De repente sólo es eso. Dime que es lo que intentas hacer (para que deseeas agregar una variable más) y te podré ayudar.

Imagen de jose
jose

lo que intento es que al paginar en dos columnas el paginador me quede asi:<< atras  Pagina: 1 2 3 4 5 6 siguiente>>dado que el link para pasar a la siguiente pagina es index.php?iniciar_consulta=10&numero_pagina=2&total_de_resultados=72de esta forma logro pasar la variable al paginador y sepa que estoy en la pagina 2 ya que si no estaria esta variable tendria que tomar $iniciar_consulta y se incrementaria de 10 en 10 los numero y no en el orden 123456..

Imagen de Balú

Ok. Siguiendo la misma lógica que para la paginación numérica (Añade las siguientes celdas al inicio y final de la tabla). Para "Atrás" (sólo se mostrará si no es la primera página): <td> <?php if ($numero_pagina > 0) { ?> <a href="<?php printf("%s?numero_pagina=%d%s", $currentPage, max(0, $numero_pagina - 1), $string_resultados); ?>">Atrás</a> <?php }?> </td> Para "Siguiente": <td> <?php if ($numero_pagina < $totalPaginas_resultados) { ?> <a href="<?php printf("%s?numero_pagina=%d%s", $currentPage, min($totalPaginas_resultados, $numero_pagina + 1), $string_resultados); ?>">Siguiente</a> <?php } ?> </td> De esta manera, si el número de la página no es el último se muestra el enlace "Siguiente". Al final, el páginador quedará así: Atrás 1 2 3 4 5 6 Siguiente Espero te sirva. Saludos.

Imagen de ronald
ronald

Hi Balù te felicito por la pag no soy muy bueno en esto pero seria ecelente si explicas mejor como mostrar los resultados en columnas y paginarlos a la vezDe Angtemano agradesco tu respuesta

Imagen de Mark
Mark

Un saludo,me gustaria saber cual seria el codigo correo para poder hacer eso estoAtrás 1 2 3 4 5 6 SiguienteUtilizando el codigo de paginar q tienes.

Imagen de rusbe
rusbe

dddddddddddddd

Imagen de alberto valle
alberto valle

tengo este codigo pero tengo el siguiente problematengo mas o menos 16000 registrosy me muestra toda la numeracio de las paginasnecesito que me quede de la siguiente forma   1 2 3 4 5 6 7 >> nextcuando le de next me muestre <<last 8 9 10 11 12 13 14 >>next***************************************buscar.php*******************************************<?                  $query = "SELECT * FROM servicio order by id_servicio"; //hago el query le necesito$result = mysql_query($query);$num_colums = 10;$num_res  = mysql_num_rows($result); // obetngo el numero de resultados y el numero de filas del query$res_pages = $num_res - 1;//verifico si hay o no paginacion//si el numero de registros no esta vacioif($num_res != 0) { //si el numero de filas es menor o igual que el numero de columnas if($num_res <= $num_colums)  {   $pager  = false; // pager es la variable ke me dice si debo o no poner la paginacion  } else  {   $pager = true;   //si el numero de la pagina $j  esta vasia  'o'  es igual a '1' asignele al numero de la pagina '0'   if(($j == "") || ($j == 1))// j es la variable ke me indica en ke pagina estoy.    $j = 0;   else   //si no restele al numero de la pagina 1   //y asigne al numero de la pagina el numero de la pagina por el numero de columnas    $j--;    $j = $j * $num_colums; // aqui obtengo el punto de inicio del query (puntero)   mysql_data_seek($result, $j);//  le digo al mysql ke de los resultados del query me muestre apartir de j  //calculo el numreo de paginas   $num = $num_res/$num_colums;   //$numt = $num -1;   $num2  = (int)$num; // obtengo la parte entera   $num3 = $num - $num2;   if($num3 > 0)    $num++;      if($num_res <= $num_colums)     $pager = false;   $num_res = $num_res - $j;   if($num_res >= $num_colums)    $num_res = $num_colums;  } // y apartir de aqui ya comienzo a dibujar los resultados?></table><table border="1"  height="25"cellpadding="5"> <tr>  <?  for($i=1; $i<=$num_res; $i++)   {    $result2 = mysql_fetch_array($result);  ?>   <td><? echo $result2['id_servicio'];?><br>    <br>    <br>    <? echo $result2['fecha'];?>   </td>  <?   }//results    if($pager == true)   {  ?>  </tr>   </table>    <table  width="7" height="1" border="1" align="left" cellpadding='#000000' cellspacing="4">    <td>   <?   if($j != 0)    {    $k = $j / $num_colums;    $pipe = true;   ?>    <a href='buscar.php?j=<?=$k;?>'>Last</a>       <?    }   ?>            <?      if($res_pages != $j)    {       $k = $j / $num_colums;    $k = $k + 2;    if($pipe == true)     //    echo "&nbsp;|&nbsp;";      ?>    <a href='buscar.php? j=<?=$k;?>'>Next</a>    <tr>     <table  width="700" height="1" border="1" align="left" cellpadding='#000000' cellspacing="4">    <td>   <?    }    echo "<br>";       for($j=1; $j <= $num; $j++)          {           echo "<a href='buscar.php?j=$j'>$j </a>";          }          ?>   </td>  <?   }//pager  ?> </tr><? }else {?><table border="1" cellpadding="5"> <tr>  <td>No albums</td> </tr></table><? }?>     

Dejar comentario

Tutoriales

Cómo descargar videos de VK.com
En este artículo voy a explicar como descargar videos y películas...
Descargar Facebook Móvil Gratis
Por si aún no lo han hecho, es posible descargar Facebook Móvil...
Cómo generar tráfico web con las redes sociales - Paso a Paso
Muchas empresas están publicando contenidos como la forma de crear...

Artículo Recomendado

3 Tips cruciales para recuperar archivos eliminados
¿Te imaginas perder el trabajo de toda una semana en tan solo unos segundos? Todos hemos pasado por este problema. Quizás eliminamos por error un archivo importante o lo borramos sin pensar que era valioso para otro... más