Sei sulla pagina 1di 8

TUTORIAL:

EXTENCION 1. Paginación de resultados con PHP y


MYSQL.

Cuando uno suele trabajar con registros de Base de datos,


suélemos tener el problema en ocasiones que tenemos demasiados
registros como para visualizarlos todos en una sola página. En
esta ocasión podemos paginar los resultados, es decir, podríamos
presentar los resultados en páginas de 1 artículo o de 10
artículos, etc., dependiendo de nuestras intenciones y su tipo de
dato que se está presentando.

En este tutorial estudiaremos como podemos desarrollar nuestro


sistema de resultado MySQL mediante paginación PHP.

-------------------------------------------------------------------------------------

Recursos

Pueden descargar gratuitamente desde la academia los recursos


necesarios para este capítulo.

Incluye:

- Articulo (.PDF), con los textos del video tutorial.

Visita nuestra academia y regístrate gratis, solo consta unos segundos


de su tiempo:
http://www.digitalwebnet.com/academia-acceso

-------------------------------------------------------------------------------------

Abrimos nuestra Local host en nuestro navegador.

Ruta:

http://localhost/tutoriales/

http://127.0.0.1/tutoriales/

-------------------------------------------------------------------------------------

Como podemos observar he añadido 3 resultados a nuestro sistema blog


ya desarrollado.

------------------------------------------------------------------------------------

Este tutorial es una extensión, podrán seguir todos sus pasos desde cero.

Os dejo un enlace, donde pondrán empezar desde cero.

Enlace:

https://www.youtube.com/watch?v=4WLUQ6BTNwk&index=1&list=PL0aorT7YVKu3
WY8Meudmoygx_Carj4Lr8

------------------------------------------------------------------------------------

Abrimos nuestro bloc de notas (sublime text).

Enlace:

http://www.sublimetext.com/
------------------------------------------------------------------------------------

Abrimos nuestra página blog.php, donde vamos a desarrollar un sistema


diferente al que tengamos ahora mismo. Veamos su desarrollo en pantalla.

Directorio:

(C:) / xampp / htdocs / tutoriales / curso-blog-php / blog.php

-------------------------------------------------------------------------------------

En primer lugar vamos a crear una variable PHP con un valor numérica,
para mostrar nuestra cantidad de resultados en pantalla.

Como solo he añadido 3 resultados, vamos a mostrar solamente 1 resultado


por página, esto lo podemos variar según su gusto o necesidad.

Ejemplo:

//Cantidad de resultados a mostrar.

$num_rows = 1;

------------------------------------------------------------------------------------

Segundo paso, vamos a añadir una sentencia ‘if’ para examinar nuestra
página a mostrar, esto lo haremos mediante la función isset(); de PHP.
En caso contrario utilizaremos la sentencia ‘else’ para definir el valor
inicio a nuestra página, esto lo haremos simplemente añadiendo el valor
1 a nuestra variable $pagina.

Ejemplo:

//Examinamos la página a mostrar.

if (isset($_GET['pagina'])) {

$pagina = $_GET['pagina'];

} else {

$pagina = 1;
}

------------------------------------------------------------------------------------

Tercer paso, calculamos el desplazamiento para nuestra consulta SQL.

Ejemplo:

//Calculamos el desplazamiento para nuestra 'Consulta' 'SQL'.

$Ubicacion = ($pagina - 1) * $num_rows;

------------------------------------------------------------------------------------

Siguiente paso, vamos a modificar nuestra cadena SQL. Para preparar la


Query de nuestra página de resultados, lo haremos mediante la función
mysqli_query();

Ejemplo:

//Cadena SQL

$sql = "SELECT * FROM articulos ORDER BY id_articulo ASC LIMIT $Ubicacion,


$num_rows";

//Query página

$resultado = mysqli_query($ConDB, $sql);

------------------------------------------------------------------------------------

Eliminamos nuestra sentencia ‘if’ gusto de bajo de nuestro ‘Query’

------------------------------------------------------------------------------------

Como podemos ver en pantalla funciona correctamente, sin mandarnos


ningún error :)

Antes de continuar con nuestro script PHP, veamos unos ejemplos muy
utilices.
------------------------------------------------------------------------------------

Sigamos con nuestro script PHP, en primer lugar, vamos a crear nuestra
Cadena SQL y Query.

Ejemplo:

<div class="center">

<?php //Botones para Paginación PHP / MySQL.

$sql = "SELECT * FROM articulos";//Cadena SQL.

$resultado = mysqli_query($ConDB, $sql);//Query.

?>

</div>

------------------------------------------------------------------------------------

Siguiente paso vamos a crear una variable cuyo valor va ser el total de
filas existentes en nuestra Base de datos.

Ejemplo:

$total_filas = mysqli_num_rows($resultado);//Total número de filas 'tabla'


'articulos'.

------------------------------------------------------------------------------------

Veamos cómo podemos obtener el total de páginas con unos simple


cálculos, existen operadores aritméticos, lógicas, asignación, bits,
ejecución, etc. Utilizaremos el operador aritmético (/) y con la función
ceil(); logramos redondear nuestra variable $total_pagina hacia arriba.

Ejemplo:

$total_pagina = ceil($total_filas / $num_rows);//Total páginas a mostrar.

------------------------------------------------------------------------------------
En el siguiente ejemplo vamos añadir los valores para nuestros botones
de ir a la página anterior o siguiente. Simplemente con el operador
aritmético sumando (+) y restando (-) mediante PHP.

Ejemplo:

//Añadimos valores a nuestros botones 'anterior' / 'siguiente'.

$prev = $pagina - 1;

$next = $pagina + 1;

------------------------------------------------------------------------------------

Veamos un ejemplo como podemos mostrar al usuario en que página se


encuentra en todo momento, mientras esta navegando por nuestra Base
de datos.

Ejemplo:
//Valoramos en que página nos encontramos.

echo "<h6>Usted se encuentra en la página número: " . $pagina . "</h6><br />";

------------------------------------------------------------------------------------

Siguiente paso, vamos a visualizar el total en resultados de Base de


datos en pantalla.

Ejemplo:

//Mostramos nuestros resultados de Base de Datos.

for ($i=1; $i<=$total_pagina; $i++) {

echo "<a href='blog.php?pagina=$i' title='Abrir página'>" . '&nbsp;&nbsp;' .


$i . "</a>";

------------------------------------------------------------------------------------
Veamos cómo podemos desarrollar nuestros botones de anterior e ir a
la primera página. Con la sentencia ‘if’ vamos a comprobar si el
resultado es mayor que 0, con esto logramos cuando en el caso
contrario, es decir cuando estamos en el inicio, se elimina dichos
botones.

Ejemplo:

//Script para botones 'anterior' / 'ir a la primera página'.

if ($prev > 0) {

echo "<a href='blog.php?pagina=1' title='Ir a la primera página'>" .


'|<<&nbsp;&nbsp;&nbsp;' . "</a>";

echo "<a href='blog.php?pagina=$prev' title='Anterior'>" . '<&nbsp;' .


"</a>";

------------------------------------------------------------------------------------

Veamos el siguiente paso que es muy parecido al anterior, cuyo objetivo es


que nos añade el botón siguiente e ir a la última página en caso que
nos encontramos en la última página, dichos botones se ocultaran.

Ejemplo:

//Script para botones 'siguiente' y 'ir a la última página'.

if ($pagina < $total_filas) {

echo "<a href='blog.php?pagina=$next' title='siguiente'>" .


'&nbsp;&nbsp;&nbsp;>&nbsp;&nbsp;&nbsp;' . "</a>";

echo "<a href='blog.php?pagina=$total_pagina' title='Ir a la última


página'>" . '>>|' . "</a>";

------------------------------------------------------------------------------------
Por ultimo cerramos nuestra conexión.

Ejemplo:

mysqli_close($ConDB);//Cerramos conexión.

------------------------------------------------------------------------------------

Un saludo,

Digital Webnet (Daniel)

Datos de interés:

http://digitalwebnet.com

info@digitalwebnet.com

https://www.facebook.com/pages/Digital-
Webnet/880308785335580

https://www.youtube.com/user/MrDigitalwebnet

https://twitter.com/digital_webnet

http://www.taringa.net/DigitalWebnet