Desarrollo Plataforma Web/Programacion Web 1 Paginación con PHP y MYSQL Ing. Tomás Urbina Paginación en PHP Ejercicio Práctico de Paginación Utilizando la maquina virtual (cualquiera que tenga la plataforma adecuada) que estén utilizando comiencen con el primer paso crear nuestra base de datos, en este ejemplo la nombramos "bancos" y le añadimos una tabla llamada "articulos" con la siguiente estructura... CREATE TABLE `articulos` ( `id` INT NOT NULL AUTO_INCREMENT , `titulo` VARCHAR( 255 ) NOT NULL , `descripcion` TEXT NOT NULL , `contenido` TEXT NOT NULL , `fecha` DATE NOT NULL , `visible` TINYINT( 1 ) NOT NULL , PRIMARY KEY ( `id` ) ); Como ejemplo podemos cargar la tabla con los titulares de un diario, la paginación final tiene este aspecto… (Agreguen al menos unos 9 titulares) Pasemos a explicar el código, primero hemos creado la función de conexión a la base de datos... function conectar() { $base_de_datos = "bancos"; $db_usuario = "root"; $db_password = "mitologia"; if (!($link = mysql_connect("localhost", $db_usuario, $db_password))) { Desarrollo Plataforma Web/Programacion Web 1 Paginación con PHP y MYSQL Ing. Tomás Urbina echo "Error conectando a la base de datos."; exit(); } // de una vez escogemos la base de datos y establecemos la conexion if (!mysql_select_db($base_de_datos, $link)) { echo "Error seleccionando la base de datos."; exit(); } return $link; } No olviden modificar las variables $base_de_datos, $db_usuario y $db_password con sus correspondientes valores, esa función puede ir en un include (seria lo mas recomendado o pueden usar el archivo conexión.php que ya se vio en clases pasadas), luego llamamos a la función... $db = conectar(); Ya tenemos la variable $db apuntada a nuestra base de datos el siguiente paso es definir los valores por defecto, como por ejemplo cada cuantos artículos paginar... $registros = 3; Y detectar si la variable $pagina (indica el numero de pagina actual) esta definida, si no es así le damos el valor 1 ósea que si no se paso por la url la variable $pagina (por ejemplo: "paginacion.php?pagina=2") entramos a la pagina 1 directamente... $pagina = $_GET["pagina"]; if (!$pagina) { $inicio = 0; $pagina = 1; } else { $inicio = ($pagina - 1) * $registros; } Como dato adicional la variable $inicio indica desde que registro empezar a mostrar los resultados. Pasemos al corazón de la paginación, miremos primero el código... $resultados = mysql_query("SELECT id FROM articulos WHERE visible = 1"); $total_registros = mysql_num_rows($resultados); $resultados = mysql_query("SELECT * FROM articulos WHERE visible = 1 ORDER BY fecha DESC LIMIT $inicio, $registros"); $total_paginas = ceil($total_registros / $registros); Desarrollo Plataforma Web/Programacion Web 1 Paginación con PHP y MYSQL Ing. Tomás Urbina Como ven realizamos 2 consultas similares en cuanto a su criterio de selección ("WHERE visible = 1"). Con la primer consulta obtenemos el numero de resultados totales... $resultados = mysql_query("SELECT id FROM articulos WHERE visible = 1"); $total_registros = mysql_num_rows($resultados); Ese dato de $total_registros nos sirve para poder determinar la cantidad de paginas. La segunda consulta tiene en el SQL dos elementos a analizar, el primero es el ORDER BY que lo que hace es ordenar los resultados por fecha y de forma descendente ("DESC") en caso contrario usaríamos "ASC". El segundo elemento a ver es LIMIT $inicio, $registros esa cláusula SQL cumple la función de limitar los resultados devueltos, el primer valor pasado como parámetro indica desde que registro empezar a devolver los resultados y el segundo parámetro indica la cantidad de registros que debe devolver desde $inicio. Luego solo queda el bucle que devuelve los resultados... while($articulo=mysql_fetch_array($resultados)) { echo "<b>".$articulo["titulo"]."</b><br>"; echo "<fontcolor='#666666'>".$articulo["descripcion"]. "</font><br><br><br>"; } Como parte final nos queda hacer el navegador de paginas (o paginación)... El código del navegador de paginas se divide en tres partes, primero la que muestra el link a la pagina anterior if(($pagina - 1) > 0) { echo "<a href='paginacion.php?pagina=".($pagina-1)."'>< Anterior</a> "; } El link a la pagina anterior será visible siempre y cuando no estemos en la primer pagina ($pagina - 1) > 0). La segunda parte del navegador de paginas seria la que muestra la cantidad de paginas... for ($i=1; $i<=$total_paginas; $i++){ if ($pagina == $i) { echo "<b>".$pagina."</b> "; } else { echo "<a href='paginacion.php?pagina=$i'>$i</a> "; } } Desarrollo Plataforma Web/Programacion Web 1 Paginación con PHP y MYSQL Ing. Tomás Urbina Y la tercer parte es la que muestra el enlace a la pagina siguiente... if(($pagina + 1)<=$total_paginas) { echo " <a href='paginacion.php?pagina=".($pagina+1)."'>Siguiente ></a>"; } En este caso muestra el enlace siempre y cuando no estemos en la ultima pagina (($pagina + 1)<=$total_paginas). OK, eso es todo prueben el código y HAGANLO funcionar, saquen todas sus inquietudes…