| Login | Tour | Inicio | Chat | Descargas | Wallpapers | Páginas recientes | FAQ | | ||
Custom Search
![]() 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 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 ![]() GNU/Linux ![]() Hacktivismo ![]() Debian ![]() NetBSD ![]() WWW ![]() Guia Linux ![]() Server Side ![]() Ofimatica ![]() Despabilando... ![]() Mundo Maya ![]() Literatura ![]() Agora ![]() Psicologia ![]() Economia ![]() Ambientalismo ![]() Desarrollo Biologia ![]() |
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'] . '">< < Página Previa</a>'; 90: 91: 92:echo " "; 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ágina Siguiente >></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á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í:
Y eso es todo, ¡hasta la próxima entrega! Última actualización: 2007-04-29 10:56:59-05 |
![]() Preparandome para el viaje a Puerto Vallarta... que triste... 1 hour, 24 minutes ago Du hast? 5 hours, 27 minutes ago Ich habe einen Kater, aber nicht so schlecht... 13 hours, 2 minutes ago Y yo un Abrazo. 1 day, 12 hours ago Dandole su habrazote a mi santa madre que me soporta 1 day, 14 hours ago esperando a que este el pozole 1 day, 16 hours ago Que estuvimos haciendo >> 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
|
| ||
| La pasión enciende el amor, pero es la inteligencia quien lo mantiene vivo. R. Lulio | ||
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: | ||