Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/05/2011, 20:04
Avatar de spider_boy
spider_boy
 
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años, 3 meses
Puntos: 89
Respuesta: contador de paginas

roboty, no es tan complicado como puede parecer.

Supongamos que por defecto queremos mostrar solo 10 registros por página. Así que ya tenemos una variable, la cantidad de registros a mostrar ($cantRegs = 10).

Luego queremos ir avanzando, es decir, que en la primera página muestre los primeros 10 registros, luego en la segunda página muestre los siguientes 10, y así sucesivamente. Esto a su vez es otra variable, la página en la que estamos actualmente ($pagActual = 1 [1 por defecto]).

Así que ahora hay que hacer el cálculo y definir la sintaxis de la consulta sql.

Variables :

Código PHP:
$cantRegs 10// 10 Registros por página
$pagActual = isset($_GET['pag']) ? (int)$_GET['pag'] : 1// Si la página en la que nos encontramos no se especifica por la URL, usamos el valor 1 por defecto. 
La consulta sql :

Código PHP:
// Esta consulta ...
SELECT FROM tabla LIMIT 10 OFFSET pag_actual*10
// ... es lo mismo que esta
SELECT FROM tabla LIMIT pag_actual*1010 
Donde pag_actual es la variable con el valor 1, 2, 3, etc. Esto hace que por cada página que avancemos, el número de la página se multiplique por 10, haciendo que la consulta tome 10 registros partiendo desde el registro 11, o desde el 21, dependiendo de la página en la que nos encontremos.


Cita:
La cláusula LIMIT puede usarse para restringir el número de registros retornados por el comando SELECT. LIMIT tiene uno o dos argumentos numéricos, que deben ser enteros positivos (incluyendo cero).

Con dos argumentos, el primer argumento especifica el desplazamiento del primer registro a retornar. El desplazamiento del registro inicial es 0 (no 1):

mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15

Por compatibilidad con PostgreSQL, MySQL también soporta la sintaxis LIMIT row_count OFFSET offset.



Por lo que finalmente tendríamos algo como esto :

Código PHP:
$cantRegs 10;
$pagActual = isset($_GET['pag']) ? (int)$_GET['pag'] : 1

// Me conecto a la BD

// Hago la consulta
$query sprintf("SELECT * FROM tabla LIMIT 10 OFFSET %d"$pagActual*10);
$query mysql_query($query) or die(mysql_error());

// Obtengo los resultados 

// Imprimo... 
Es tan simple coo eso. Luego para mejorarlo tendrías que agregar la típica numeración tipo google.

Espero haber sido claro. Saludos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.