Paginar Resultados con PHP y MySQL
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.





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.
- responder
Enviado por malom17 (no verificado) el Mié, 07/20/2005 - 18:53.como descargo el video tutorial???
- responder
Enviado por caotico el Lun, 04/28/2008 - 19:16.Tanto el codigo fuente como el videotutorial estan en el mismo archivo zip
- responder
Enviado por baluart el Mar, 04/29/2008 - 09:16.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.
- responder
Enviado por Balú (no verificado) el Jue, 07/21/2005 - 02:18.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
- responder
Enviado por Jose (no verificado) el Vie, 02/17/2006 - 09:32.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.
- responder
Enviado por Balú (no verificado) el Sáb, 02/18/2006 - 00:37.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..
- responder
Enviado por jose (no verificado) el Sáb, 02/18/2006 - 11:31.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.
- responder
Enviado por Balú (no verificado) el Dom, 02/19/2006 - 00:12.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
- responder
Enviado por ronald (no verificado) el Mié, 08/02/2006 - 08:13.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.
- responder
Enviado por Mark (no verificado) el Vie, 10/06/2006 - 15:04.dddddddddddddd
- responder
Enviado por rusbe (no verificado) el Mar, 06/05/2007 - 17:15.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 " | "; ?> <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><? }?>
- responder
Enviado por alberto valle (no verificado) el Mar, 11/20/2007 - 11:15.Deja tu comentario