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ó

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.

Enviado por malom17 (no verificado) el Mié, 07/20/2005 - 18:53.
como descargo el video

como descargo el video tutorial???

Enviado por caotico el Lun, 04/28/2008 - 19:16.
Tanto el codigo fuente como

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

Enviado por baluart el Mar, 04/29/2008 - 09:16.
Hola malon17, gracia

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.

Enviado por Balú (no verificado) el Jue, 07/21/2005 - 02:18.
Estoy tratando de ag

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

Enviado por Jose (no verificado) el Vie, 02/17/2006 - 09:32.
Para empezar la vari

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.

Enviado por Balú (no verificado) el Sáb, 02/18/2006 - 00:37.
lo que intento es qu

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..

Enviado por jose (no verificado) el Sáb, 02/18/2006 - 11:31.
Ok. Siguiendo la mis

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.

Enviado por Balú (no verificado) el Dom, 02/19/2006 - 00:12.
Hi Balù te fe

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

Enviado por ronald (no verificado) el Mié, 08/02/2006 - 08:13.
Un saludo,me gustari

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.

Enviado por Mark (no verificado) el Vie, 10/06/2006 - 15:04.
dddddddddddddd

dddddddddddddd

Enviado por rusbe (no verificado) el Mar, 06/05/2007 - 17:15.
tengo este codigo pe

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><? }?>     

Enviado por alberto valle (no verificado) el Mar, 11/20/2007 - 11:15.

Deja tu comentario

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

Suscríbete

  • Suscribete a nuestro feed
  • Add to Google Reader or Homepage
  • Subscribe in NewsGator Online
  • Add to My AOL
  • Subscribe in Bloglines
  • Add to netvibes