Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/12/2010, 00:29
Avatar de Gambinoh
Gambinoh
 
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Índice numérico que altera el LIMIT

Cita:
Iniciado por areslepra Ver Mensaje
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.

Última edición por Gambinoh; 24/12/2010 a las 01:43 Razón: Había metido la gamba en $fin