Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/01/2012, 13:23
maximilianojcelis
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 11
Sistema de Paginacion [APORTE]

Bien, quiero compartir este sistema de paginacion que es muy profesional y que no tiene mucho codigo. Lo que me llevo a hacerlo es que encontre muchos sistemas bastante parecidos, pero ninguno era eficiente a la hora de mostrar los enlaces. Por eso lo programe dejandolo simple y profesional para que cualquiera pueda usarlo. El sistema cuenta con un boton para pasar siguiente, anterior, pasar una pagina y retroceder una pagina. En fin, pueden verlo en accion aqui. Lo dejare alojado ahi para que cualquiera en un futuro que lo requiera pueda ver como funciona.

Código PHP:
Ver original
  1. <?
  2.  
  3. //archivos necesarios
  4. require_once 'config.php';
  5. require_once 'conexion.php';
  6.  
  7. // obtengo puntero de conexion con la db
  8. $dbConn = conectar();
  9.  
  10. // Contamos la cantidad de registros que hay
  11. $res = mysql_query("SELECT id FROM TuTabla");
  12. $total_registros = mysql_num_rows($res);
  13.  
  14. // Declaramos la cantidad de registros a mostrar por pagina
  15. $registros = 1;
  16.  
  17. // Declaramos la pagina seleccionada por el usuario
  18. $pagina = $_GET["pagina"];
  19.  
  20. // $inicio indica a partir de que registro se muestra la consulta
  21. if (empty ($pagina)) {
  22.      $inicio = 0;
  23.      $pagina=1;
  24. }
  25. else {
  26.     $inicio = ($pagina - 1) * $registros;
  27. }
  28.    
  29. // Traemos los resultados a mostrar por cada pagina seleccionada
  30. $arrayFrases = array();
  31. $resultados = mysql_query("SELECT * FROM TuTabla ORDER BY loquesea DESC LIMIT $inicio,$registros") or die (mysql_error()); 
  32. while ( $row = mysql_fetch_assoc ($resultados)) {
  33.     array_push( $arrayFrases,$row );
  34. }
  35.  
  36. // Calculamos el total de paginas a mostrar
  37. $total_paginas = ceil($total_registros / $registros);
  38.  
  39. /* El sistema esta programado para ver paginas de 10 en 10 de la siguiente manera:
  40. 1 2 3 4 5 6 7 8 9 10 y al pasar una pagina se vera 11 12 13 14 15 16 17 18 19 20 y asi
  41. sucesivamente hasta llegar al final de paginas encontradas. (cada uno obviamente puede
  42. modificarlo adaptandolo a sus necesidades). */
  43.        
  44.         // Calculamos $fin y luego $enlace_fin para despues saber el tamaño de enlaces a mostrar
  45.         $j=10;
  46.         for ($fin=1; $fin<$j ;$fin+=1){
  47.         for ($j=10; $j<$pagina; $j+=10)
  48.         {}}
  49.         $enlace_fin = $fin - $pagina;
  50.        
  51.         // Calculamos el boton para avanzar a la pagina siguiente
  52.         $j=10;
  53.         for ($sigpag=1; $sigpag<$j ;$sigpag+=10){
  54.         for ($j=10; $j<$pagina; $j+=10)
  55.         {}}
  56.        
  57.         // Calculamos el boton para retroceder a la pagina anterior
  58.         $j=21;
  59.         for ($antpag=0; $antpag<=$j-20;$antpag+=1){
  60.         for ($j=10; $j<$pagina; $j+=10)
  61.         {}}
  62.        
  63.         // Calculamos el numero en el cual nos paramos para empezar a paginar
  64.         $j=11;
  65.         for ($ini=0; $ini<=$j-10;$ini+=1){
  66.         for ($j=10; $j<$pagina; $j+=10)
  67.         {}}
  68.  
  69. ?>

Luego en el body iria esto:

Código PHP:
Ver original
  1. <div id="paginacion">
  2.  
  3.     <?
  4.              mysql_free_result($resultados);               
  5.     if($total_registros) {
  6.                
  7.         if($pagina>1) {?>
  8.         <div id="anterior"><? echo "<a href='index.php?pagina=".($pagina-1)."'>« Anterior</a> ";?></div><?
  9.         }
  10.         if($pagina>10) {?>
  11.         <div id="antpag"> <? echo " <a href='index.php?pagina=".($antpag)."'>«</a>";?> </div><?
  12.         }
  13.  
  14.                
  15.         for ($i=$ini; $i<=$enlace_fin+$pagina and $i<=$total_paginas; $i++){
  16.             if ($i == $pagina){?>
  17.                 <div id="noselect"><? echo "<b>".$i."</b> ";}
  18.             else {
  19.             ?> <div id="numero"> <? echo "<a href='index.php?pagina=$i'>$i</a> "; }?> </div>
  20.         <? } if($ini <= $total_paginas) {?>
  21.         <div id="sigpag"> <? echo " <a href='index.php?pagina=".($sigpag)."'>»</a>";?> </div><?
  22.         }
  23.         if($pagina < $total_paginas) {?>
  24.             <div id="siguiente"> <? echo " <a href='index.php?pagina=".($pagina+1)."'>Siguiente »</a>";?> </div><?
  25.         }
  26.        
  27.                
  28.     }
  29. ?>
  30. </div>


Archivo conexion:
Código PHP:
Ver original
  1. <?php
  2.      
  3. function conectar () {
  4.      
  5. $db_con = mysql_pconnect (DB_SERVER,DB_USER,DB_PASS);
  6. if (!$db_con) return false;
  7. if (!mysql_select_db (DB_NAME, $db_con)) return false;
  8. return $db_con;
  9.      }
  10.      
  11. ?>

Archivo config:
Código PHP:
Ver original
  1. <?php
  2.      
  3. // constantes de conexion de db
  4. define( 'DB_SERVER', 'tuserver' );
  5. define( 'DB_NAME', 'nombre_db');
  6. define( 'DB_USER', 'nombre_user');
  7. define( 'DB_PASS', 'tupassword');
  8.  
  9.      
  10. ?>

Última edición por maximilianojcelis; 24/01/2012 a las 13:34