<?php
if (isset($_REQUEST['pos']))
$inicio=$_REQUEST['pos'];
else
$inicio=0;
?>
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$conexion=mysql_connect("localhost","root","z80") or
die("Problemas en la conexion");
mysql_select_db("phpfacil",$conexion) or
die("Problemas en la selección de la base de datos");
$registros=mysql_query("select alu.codigo as
codigo,nombre,mail,codigocurso,
nombrecur from alumnos as alu
inner join cursos as cur on cur.codigo=alu.codigocurso
limit $inicio,2", $conexion) or
die("Problemas en el select:".mysql_error());
$impresos=0;
while ($reg=mysql_fetch_array($registros))
{
$impresos++;
echo "Codigo:".$reg['codigo']."<br>";
echo "Nombre:".$reg['nombre']."<br>";
echo "Mail:".$reg['mail']."<br>";
echo "Curso:".$reg['nombrecur']."<br>";
echo "<hr>";
}
mysql_close($conexion);
if ($inicio==0)
echo "anteriores ";
else
{
$anterior=$inicio-2;
echo "<a href=\"pagina1.php?pos=$anterior\">Anteriores </a>";
}
if ($impresos==2)
{
$proximo=$inicio+2;
echo "<a href=\"pagina1.php?pos=$proximo\">Siguientes</a>";
}
else
echo "siguientes";
?>
</body>
</html>
Hay muchas cosas importantes en este ejemplo, lo primero que vemos es el bloque que rescata a partir de qué registro ir mostrando:
if (isset($_REQUEST['pos']))
$inicio=$_REQUEST['pos'];
else
$inicio=0;
?>
La función isset retorna verdadero si existe la variable que le pasamos como parámetro, en este caso le estamos pasando la componente pos del vector asociativo $_REQUEST. Cuando llamamos por primera vez a esta página, lo hacemos : pagina1.php sin parámetros, por lo que el if se verifica como falso. Es decir la variable $inicio se carga con el valor 0.
Otro concepto importante es la cláusula limit que es propiedad del gestor MySQL. Mediante esta cláusula limitamos la cantidad de registros que retorna el select. El primer valor del limit indica a partir de cual registro y el segundo la cantidad de registros. Es decir si un select sin limit retorna 100 registro, luego utilizando por ejemplo la sintaxis limit 50,25 nos retornará, de esa lista de 100 registros, a partir del registro de la posición 50, 25 registros.
En nuestro problema indicamos que retorne desde valor que tenga la variable $inicio y como cantidad 2 (páginas con 2 registros):
$registros=mysql_query("select alu.codigo as
codigo,nombre,mail,codigocurso,
nombrecur from alumnos as alu
inner join cursos as cur on cur.codigo=alu.codigocurso
limit $inicio,2", $conexion) or
Seguidamente mostramos todos los registros retornados y además los contamos:
$impresos=0;
while ($reg=mysql_fetch_array($registros))
{
$impresos++;
echo "Codigo:".$reg['codigo']."<br>";
echo "Nombre:".$reg['nombre']."<br>";
echo "Mail:".$reg['mail']."<br>";
echo "Curso:".$reg['nombrecur']."<br>";
echo "<hr>";
}
Ahora vemos dónde dispondremos los hipervínculos, hacia adelante o atrás:
if ($inicio==0)
echo "anteriores ";
else
{
$anterior=$inicio-2;
echo "<a href=\"pagina1.php?pos=$anterior\">Anteriores </a>";
}
Si la variable $inicio vale 0 significa que no hay registros antes de éste, por lo que sólo mostramos un texto "anteriores". En caso que la variable $inicio sea distinta de 0, se ejecuta el else, donde disponemos un hipervínculo con la misma página e inicializando el parámetro pos con el valor de $inicio menos 2.
Si el contador $impresos tiene el valor 2 significa que posiblemente hay más registros por mostrar y debemos disponer un hipervínculo con la misma página pero inicializando el parámetro pos con el valor de $inicio más 2:
if ($impresos==2)
{
$proximo=$inicio+2;
echo "<a href=\"pagina1.php?pos=$proximo\">Siguientes</a>";
}
else
echo "siguientes"; |