Buscador


En todo Internet
En Uterra.Com

¿Problemas sexuales?
Jerez de la Frontera
y Cádiz
Homosexualidad, infidelidad, divorcio, violencia de género, etc.

Contenidos


Ahora, siguiendo la línea que llevamos, vamos a mejorar el código anterior para que podamos mostrar los resultados de nuestra base de datos organizados en páginas con un determinado número de registros.

Esto lo podríamos hacer con varias páginas que hicieran la lectura de la base de datos para los diferentes grupos de registros y enlazarlas como enlazaríamos cualquier otra página, pero tendríamos que actualizar los enlaces a medida que agregásemos nuevos registros. Crear un sistema de paginación implica crear los enlaces de manera dinámica, para que según estemos en una página o en otra, podemos ir a la anterior o la siguiente sin tener que crear manualmente esos enlaces.

Para lograr esto, vamos a usar la consulta LIMIT, que determina cuantos registros vamos a mostrar y a partir de cual. Más concretamente, LIMIT 0,5 nos dice que a partir del registro cero (el primero) vamos a mostrar 5 resultados. Siguiendo esta sencilla lógica, lo que vamos ha hacer será pasarle las variables de los registros que queremos mostrar por URL mediante los enlaces de la barra de navegación.

Nuestro objetivo por tanto, será generar unos enlaces dinámicos que nos pasen los valores de la consulta que queremos realizar. Será siempre la misma página la que muestra los resultados, pero mostrará unos u otros en función de los valores que tengan las variables que le pasemos por la URL.

Teniendo presente que usamos el archivo de conexión a la base de datos ya mencionado, tomamos los datos de la conexión mediante los respectivos “include”.

Dicho esto, asignamos el número de registros que queremos tener por página en la variable “$numer_reg” y asignamos el nombre de la tabla mediante la variable “$nombre_tabla”.

Realizamos una primera consulta para calcular el número de registros que tenemos en la tabla de la base de datos. Este valor lo obtenemos mediante la variable “$numero_registros0”. Seguidamente creamos unas estructuras condicionales para determinar cuando mostraremos los enlaces según el número de registros y la página, además de los enlaces propiamente dichos. Esta parte la he puesto entre almohadillas y no es preciso modificarla. Una vez que tenemos los enlaces, creamos un separador y con estas variables creamos una nueva que será la barra de navegación en la variable “$pagi_navegacion”.

Seguidamente creamos una nueva estructura condicional para que se ejecute una consulta u otra en función de si recibimos el valor a partir del cual vamos a mostrar los registros, si no hay ningún valor en la variable “$pagi” la consulta se ejecutara con el valor 0, es decir, el primer registro.

Si existe valor en “$pagi” recogemos ese valor y ejecutamos la consulta que contiene esta variable. Se ejecuta la consulta, y ya tenemos nuestros resultado paginados.

Ya solo queda poner las variables con la información de los registros mostrados e imprimir la barra de navegación.

Sencillo, ¿verdad?
 

<html> 
<head> 
<TITLE>Muestra los resultados paginados de una consulta MySQL.</TITLE> 
</head> 

<body> 
<div align='center'> 
  <table border='1' cellpadding='0' cellspacing='0' width='600' bgcolor='#F6F6F6' bordercolor='#FFFFFF'> 
    <tr> 
      <td width='150' style='font-weight: bold'>ID</td> 
      <td width='150' style='font-weight: bold'>NOMBRE</td> 
      <td width='150' style='font-weight: bold'>E-MAIL.</td> 
      <td width='150' style='font-weight: bold'></td> 
    </tr> 
<?php 

$pagi 
$_GET['pagi'];

$contar_pagi = (strlen($pagi));    // Contamos el numero de caracteres

// Numero de registros por pagina

$numer_reg 10;

include(
'abre_conexion.php'); 

$nombre_tabla $tabla_db1;

// Contamos los registros totales

    
$query0 "select * from $nombre_tabla";     // Esta linea hace la consulta
    
$result0 mysql_query($query0); 
    
$numero_registros0 mysql_num_rows($result0); 

##############################################
// ----------------------------- Pagina anterior
$prim_reg_an $numer_reg $pagi;
$prim_reg_ant abs($prim_reg_an);        // Tomamos el valor absoluto

if ($pagi <> 0

$pag_anterior "<a href='resultados.php?pagi=$prim_reg_ant'>Pagina anterior</a>";
}
// ----------------------------- Pagina siguiente
$prim_reg_sigu $numer_reg $pagi;

if (
$pagi $numero_registros0 - ($numer_reg 1)) 

$pag_siguiente "<a href='resultados.php?pagi=$prim_reg_sigu'>Pagina siguiente</a>";
}
// ----------------------------- Separador
if ($pagi <> and $pagi $numero_registros0 - ($numer_reg 1)) 

$separador "|";
}
// Creamos la barra de navegacion

$pagi_navegacion "$pag_anterior $separador $pag_siguiente";

// -----------------------------
##############################################

if ($contar_pagi 0

// Si recibimos un valor por la variable $page ejecutamos esta consulta

    
$query "select * from $nombre_tabla LIMIT $pagi,$numer_reg";

else 

// Si NO recibimos un valor por la variable $page ejecutamos esta consulta

    
$query "select * from $nombre_tabla LIMIT 0,$numer_reg";


    
$result mysql_query($query); 
    
$numero_registros mysql_num_rows($result); 

    while (
$registro mysql_fetch_array($result)){ 
echo 

    <tr> 
      <td width='150'>"
.$registro['id']."</td> 
      <td width='150'>"
.$registro['nombre']."</td> 
      <td width='150'>"
.$registro['email']."</td> 
      <td width='150'></td> 

    </tr> 
"


include(
'cierra_conexion.php'); 
echo 
"
   </table> 
</div>

<div align='center'> 
  <table border='0' cellpadding='0' cellspacing='0' width='600'>
    <tr> 
      <td width='600' colspan='4'>&nbsp;</td> 
    </tr>
    <tr> 
      <td width='600' colspan='4'><p align='right'>Registros: 
$numero_registros de un total de $numero_registros0</td> 
    </tr>
   </table> 
</div>

<p align='center'>
$pagi_navegacion</p>
"
;
?> 
</body> 

</html>