Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: dimitrix en 19 Septiembre 2008, 09:31 am



Título: De 10 en 10 en SQL
Publicado por: dimitrix en 19 Septiembre 2008, 09:31 am
Pues bueno, mi última preguntita en SQL (cosa que ya he buscado en google XD)

Cuanto haces una consulta a la db y por ejemplo te sale 55 resultados, como podría hacer que me salieran 10 y luego un botón para pasar a los 10 siguientes.

Creo que en un principio se podría sacar sólo 10 con una función tipo:

$a = 1;
while (10 == $a);
$a++

Pero aunque funcionara bien puesto y todo eso, sólo me mostraría los 10 primeros ¿No?

Cómo podría hacer para ir de 10 en 10.

Un saludo.


Título: Re: De 10 en 10 en SQL
Publicado por: Rentero en 19 Septiembre 2008, 12:03 pm
Eso se llama paginación.

Se hace usando LIMIT en SQL, pondré un ejemplo básico pero encontrarás más cosas sabiendo como como se llama :P
Código
  1. <?php
  2. $catidad = 10; //numero de resultados por página
  3. $pag = intval($_GET['pag']); //casting a int
  4.  
  5. $desde = $pag * $cantidad;
  6. //ordenamos por id, de forma ascenedente
  7. $resp = mysql_query("SELECT * FROM noticias ORDER BY id DESC LIMIT $desde, $cantidad");
  8. ?>

Si pagina.php?pag=0 => $pag = 0; $desde = 0; $cantidad= 10; => LIMIT 0, 10
Si pagina.php?pag=1 => $pag = 1; $desde = (1 * 10) = 10; $cantidad = 10; => LIMIT 10, 10;

Es decir, que tienes que comprobar:
* Que la $_GET['pag'] es un número.
* Tienes que comprobar el numero de entradas que hay para no intentar listar más de las que son ($num_paginas = $num_total_entradas / $cantidad)

Pff ahora mismo no tengo la cabeza como para pensar más xD pero creo que como intrducción sirve ;)

http://www.desarrolloweb.com/articulos/1035.php
http://www.elguruprogramador.com.ar/articulos/paginacion-en-php.htm
http://www.webexperto.com/articulos/art/74/paginacion-de-resultados-con-php/

En el foro tb hay pero ahora no los encuentro :S


Título: Re: De 10 en 10 en SQL
Publicado por: dimitrix en 19 Septiembre 2008, 14:42 pm
Genial, muchas gracias por todo, ya sigo yo XDD