Custom Search
Bloggers Activos
Emacs como IDE para CakePHP aarkerio
La Negación del Viaje Lunar tonathiu
Porque los mononeurones si tenemos madre! blacksoul
BrunoFerías thot
The Art vendaval
Aclimatación extraterrestre ¿para qué? ahuramazdah
¿A que le tienes miedo? teosho
Sobre nazis, terror y medios tonathiu
Amenazas a la cuarta dimensión ¿de veras? ahuramazdah
Tarjeta Broadcom BCM94311MCG rev 02 teosho
Last Download
Segunda Fundación
Segunda Fundación
Pidiendo OpenSolaris 2008.5
vendaval
Sospechosismo
aarkerio
Slackware 12.1 Final
vendaval
Jaime Maussan da por auténtico video trucado del chupacabras hecho en Blender 3D
asarch
Linux hot girl
aarkerio
Calderón puede ser sujeto a juicio político, sostiene Carrancá
tonathiu
La desnutrición en México
aarkerio
Sistema Infalible
ordbal
Histórico
aarkerio
Nietzsche en la FCPyS
aarkerio
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
Los verdaderos costos
Los verdaderos costos

Hacktivism

LinuxChix button

WWW \ Paginación con PHP
WWW
Paginación con PHP

Este artículo ha sido consultado en 1,099 ocasiones.

Cuando una tabla tiene más de 50 registros comienza a volverse ’molesta’, pues tarda mucho en cargarse y desplegarse, además las páginas comienzan a volverse kilométricas. Esta situación es un costoso problema, pues el servidor tiene una gran carga de trabajo ante una consulta cualquiera.

Cuando nuestros datos se vuelven muy abundantes ha llegado el momento de paginar, es decir, de mostrar el cóntenido de una consulta en una página navegable al estilo de Google. Las librerías PEAR de PHP cuentan con la clase Pager que nos ayuda en esta tarea. (Si usted está en Debian asegúrese que el paquete php4-pear está instalado).

Note que en la línea 48 cargamos las opciones para conectarnos, si usted está usando MySQL cambie pgsql: por mysql:. En la línea 54 realizamos la conexión con PEAR. En la línea 77 obtenemos el array $data, que contiene todos los detalles para la paginación.

   1:<?
   2:/*
   3:* Paginacion de una tabla con PEAR
   4:* 
   5:* Manuel Montoya 2005 GPL  manuel@mononeurona.org
   6:* 
   7:* www.MonoNeurona.org
   8:* 
   9:*/
  10:
  11:require_once 'DB.php'; // La conexion PEAR a la BD
  12:
  13:require_once 'DB/Pager.php'; // La clase que realiza la paginacion
  14:
  15:$SELF = $_SERVER['PHP_SELF']; // La pagina actual
  16:
  17:?>
  18:
  19:<html>
  20:<head><title>Ejemplo Paginacion</title></head>
  21:<style type="text/css">
  22:img { 
  23:  border:0;
  24:}
  25:a {
  26:  color: #2d508a;
  27:  font-size: 12px;
  28:  font-family: Verdana, Arial, Helvetica, sans-serif; 
  29:  text-decoration:none;
  30:  text-align:left;
  31:}
  32:
  33:a:hover {
  34:  color: #f29503;
  35:  font-size: 12px;
  36:  font-family: Verdana, Arial, Helvetica, sans-serif;
  37:}
  38:</style>
  39:<body>
  40:<?
  41:
  42:$DATABASE   = "DBPROYECTOS";
  43:$DBUSER     = "postgres"; 
  44:$DBPASSWORD = "Mexik0L0ReS33"; 
  45:$DBHOST     = "localhost";
  46:$DBPORT     =  5432;
  47:
  48:$dsn = "pgsql://$DBUSER:$DBPASSWORD@$DBHOST/$DATABASE";
  49:    $options = array(
  50:          'debug'       => 2,
  51:          'portability' => DB_PORTABILITY_ALL,
  52:      );
  53:
  54:$conn =& DB::connect($dsn, $options);
  55:
  56:if (PEAR::isError($conn)) 
  57:         die($conn->getMessage());
  58:
  59:
  60:$sql="SELECT id, nombre, responsable FROM proyectos ORDER BY id";
  61:
  62:// La variable $_GET['from'] existe, no esta vacia y es un numero ?
  63:if (isset($_GET['from']) && $_GET['from'] != '' && is_numeric($_GET['from']))
  64:     $from = $_GET['from']; 
  65:else
  66:     $from = 0; 
  67:
  68:$limit = 10;       //  Despliega 10 paginas al estilo de Google 
  69:
  70:$maxpages = 10;    // El numero total de registros en el query
  71:
  72:$Q="SELECT count(*) FROM proyectos";  //Cuento los registros 
  73:
  74:$nrows =& $conn->getRow($Q);
  75:
  76:// La clase pager que me devuelve el array $data
  77:$data = DB_Pager::getData($from, $limit, $nrows[0], $maxpages);     
  78:
  79:echo '<table align="center" width="70%">';
  80:
  81:echo '<tr><td colspan="3"><p class="negrita"> 
  82:Pagina '. $data['current'] . ' de ' . $data['numpages'] . '</p></td></tr>'; 
  83:
  84:echo '<tr><td colspan="3" align="center">';
  85:
  86:
  87:// A menos que sea la primera pagina, muestra la liga de "<< Pagina Previa"
  88:if ( $data['current'] != $data['firstpage'] )  
  89:   echo '<a href="'. "$SELF?from=" . $data['prev'] . '">&lt; &lt; P&aacute;gina Previa</a>'; 
  90:
  91:       
  92:echo "&nbsp;&nbsp;";
  93:
  94:// A menos que sea la ultima pagina, muestra la liga de "Siguiente>>"
  95:if ( $data['current'] != $data['lastpage'] ) 
  96:  echo '<a href="'. "$SELF?from=" . $data['next'] . '">P&aacute;gina Siguiente &gt;&gt;</a>';
  97:
  98:
  99:echo '</td></tr>';
 100:
 101:// Ve por 10 registros usando la funcion de PEAR::DB limitQuery  
 102:$res = $conn->limitQuery($sql, $from, $limit); // Display the rows 
 103:
 104:
 105:$color1 = 'cccccc';  // Gris
 106:$color2 = 'fff';     // Blanco
 107:$row_count = 0;
 108:
 109://Pinto los registros
 110:while ($row = $res->fetchrow()) {
 111:        
 112:        $bgcolor = ($row_count % 2) ? $color1 : $color2;  // color del renglon 
 113:                
 114: print "<tr style=\"background-color:#$bgcolor;\">
 115:        <td class=\"boton\"><a href=\"editar.php?id=". $row[0]. "\">
 116:        <img src=\"images/editar.png\" title=\"Editar\" alt=\"Editar\"></a></td>
 117:        <td class=\"presenta\">". $row[1]. "</td>
 118:        <td class=\"boton\"><a href=\"borrar.php?id=". $row[0]. "\">
 119:        <img src=\"images/borrar.png\" title=\"Borrar\" alt=\"Borrar\";></a>
 120:        </td></tr>\n";
 121:     
 122:        $row_count++; 
 123:}
 124:
 125:
 126:echo '<tr><td colspan="3" style="text-align:center;">
 127:<span class="pequena">' . $data['numrows'] . ' Registros encontrados '; 
 128:
 129:echo 'Desplegando '. $data['limit'] . ' registros por p&aacute;gina</span></td></tr>'; 
 130:
 131:echo "<tr><td colspan=\"3\" style=\"text-align:center;\">
 132:<span class=\"pequena\">";    // Ligas directas a las paginas  
 133:
 134:
 135:foreach ($data['pages'] as $page => $start_row) {
 136:   echo "[ <a href='$SELF?from=$start_row'>$page</a> ] "; 
 137:} 
 138:
 139:echo '</td></tr>';
 140:?>
 141:
 142:<tr><td colspan="3"><br><br></td></tr>
 143:
 144:<tr><td>
 145:<form method="post" name="forma" action="menu.php">
 146:<input type="hidden" name="pagina" value="<?= $pagina; ?>">
 147:<input type="hidden" name="sec" value="proyect2">
 148:<input class="boton" type="submit" value="Nuevo registro">
 149:</form>
 150:</td><td></td><td style="text-align:right;">
 151:</form>
 152:
 153:</td></tr></table>
 154:
 155:</body>
 156:</html>

El resultado del código luce así:

Paginación

Y eso es todo, ¡hasta la próxima entrega!


Autor
Manuel Montoya es psicólogo y vive en la Ciudad de México. Desde 1998 se dedica a la consultoría de sistemas abiertos. Ha desarrollado aplicaciones Web para American Express, Bancomext, Aeroméxico y Ford. Actualmente trabaja en el Instituto de Investigaciones Biomédicas de la UNAM usando Python, PostgreSQL y PHP sobre NetBSD, además prepara el café de las mañanas. Jedit.org y WindowMaker son su editor y escritorio favoritos.
Manuel Montoya

Última actualización: 2007-04-29 10:56:59-05

Printable version

Add comment:



Captcha




Que estas haciendo?
teoshoteosho está:
Preparandome para el viaje a Puerto Vallarta... que triste...
1 hour, 24 minutes ago

scarecrowscarecrow está:
Du hast?
5 hours, 27 minutes ago

der_teufelder_teufel está:
Ich habe einen Kater, aber nicht so schlecht...
13 hours, 2 minutes ago

rnstuxrnstux está:
Y yo un Abrazo.
1 day, 12 hours ago

saidjosesaidjose está:
Dandole su habrazote a mi santa madre que me soporta
1 day, 14 hours ago

dsquiddsquid está:
esperando a que este el pozole
1 day, 16 hours ago

Que estuvimos haciendo >>
Chipotle Software

En tu equipo tienes:
Sólo Windows
Windows y Linux
Sólo Linux
Linux y un BSD
Solaris, linux y BSD
Sólo MacacOS
Rapiditas
Problemas de Lenguaje en niños
10410 lecturas
Sexualidad infantil y juvenil
9166 lecturas
Anticoncepción de Emergencia
7840 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
6917 lecturas
Sinapsis y exocitosis
6227 lecturas
Mi primer CakePHP, mmmmm cakeee
5260 lecturas
Evolución filética en las hepáticas
4698 lecturas
BASH y Primeros Comandos
4012 lecturas
CakePHP II Active Record
3742 lecturas
Cómo convertirse en hacker
3619 lecturas
Add to Technorati Favorites

ir arriba
La pasión enciende el amor, pero es la inteligencia quien lo mantiene vivo. R. Lulio

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer