Sei sulla pagina 1di 4

Desarrollo Plataforma Web/Programacion Web 1 Paginacin con PHP y MYSQL Ing.

Toms Urbina

Paginacin en PHP
Ejercicio Prctico de Paginacin Utilizando la maquina virtual (cualquiera que tenga la plataforma adecuada) que estn utilizando comiencen con el primer paso crear nuestra base de datos, en este ejemplo la nombramos "bancos" y le aadimos 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 paginacin final tiene este aspecto (Agreguen al menos unos 9 titulares)

Pasemos a explicar el cdigo, primero hemos creado la funcin de conexin 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 Paginacin con PHP y MYSQL Ing. Toms 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 funcin puede ir en un include (seria lo mas recomendado o pueden usar el archivo conexin.php que ya se vio en clases pasadas), luego llamamos a la funcin...
$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 artculos 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 corazn de la paginacin, miremos primero el cdigo...
$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 Paginacin con PHP y MYSQL Ing. Toms Urbina Como ven realizamos 2 consultas similares en cuanto a su criterio de seleccin ("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 usaramos "ASC".

El segundo elemento a ver es LIMIT $inicio, $registros esa clusula SQL cumple la funcin de limitar los resultados devueltos, el primer valor pasado como parmetro indica desde que registro empezar a devolver los resultados y el segundo parmetro 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 paginacin)...

El cdigo 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 Paginacin con PHP y MYSQL Ing. Toms 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 cdigo y HAGANLO funcionar, saquen todas sus inquietudes

Potrebbero piacerti anche