Paginación en PHP

Anuncio
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…
Descargar