Cita:
Iniciado por areslepra A ver la cosa sería más o menos así, supongamos que llamamos a la web
ejemplo.php?pagina=2
Donde pagina sería el número de página:
Código PHP:
$pag = $_GET['pagina'];
if(is_numeric($pag) && is_int($pag)) {
$pag = (int) $pag;
}else{
$pag = 0;
}
$cantidad = 2
$inicio = $pag * $candidad;
$sql = "SELECT * FROM tabla WHERE campo = '$id' ORDER BY id ASC LIMIT $inicio, $cantidad";
La primera parte es un validación bastante precaria pero deberia funcionar (no lo probe pero deberia), después calculamos el primer registro en función del número de púgina y la cantidad por página y mandamos esos datos al SELECT y listo.
Es a modo de ejemplo pero supongo que te va a servir de guia.
Gracias por tu aportación he podido resolverlo. Sin embargo lamento decirte que mi nivel de php es tan pésimo que me he limitado a usar $_GET para capturar la variable $pag y luego he usado operadores matemáticos.
Te expongo el código por si te parece que se puede mejorar. La única pega es el tema de la url que pese a mis esfuerzos va a quedar tal que así:
http:www.dominio.com/dinamica.php?id=seccion&pag=0
http:www.dominio.com/dinamica.php?id=seccion&pag=1
http:www.dominio.com/dinamica.php?id=seccion&pag=2...
De todas formas reconozco que tampoco sabría como ahorrarme la variable $pag si quiero ir recorriendo las páginas con los enlaces numerados. En SEO pregunté y me dijeron que si mi proveedor de hosting lo permite eso se arregla con "mod_rewrite" y consultando me han dicho que sí que disponen de ello.
Bien ahora te expongo los enlaces:
<a href="dinamica.php?id=seccion&pag=0">[0]</a>
<a href="dinamica.php?id=seccion&pag=0">[1]</a>...
El código en dinamica.php:
$id = mysql_real_escape_string($_GET['id']);
$pag = mysql_real_escape_string($_GET['pag']);
$inicio = $pag * 4;
$fin = 2;
$sql = "SELECT * FROM tabla WHERE campo = '$id' ORDER BY id ASC LIMIT $inicio, $fin";
Luego en la otra sección donde el bucle while seguía imprimiendo 2 0 3 resultados más simplemente he usado operadores aritméticos, no es por afan se sinplificar, es que tu solución yo no sabía colocarla sin que me diera fallos en $inicio = $pag * $candidad; así que puse directamente $inicio = $pag * 4; en fin a ver si me pongo las pilas y me leo un tutorial extenso de php que bajé de librosweb. Aquí el código para la otra sección:
$inicio = ($pag * 4) + 2;
$sql = "SELECT * FROM tabla WHERE campo = '$id' ORDER BY id ASC LIMIT $inicio, $fin";
Si ves algún error dímelo por favor, cualquier cosa que yo pueda comprender (que no es mucho) y así colocarlo. Por ejemplo no entendí el error al leer $inicio = $pag * $candidad; cuando antes se había declarado el valor de cantidad.