2010-06-22 6 views
6

Je suis nouveau à php et sql, et j'ai une petite question sur la façon de réaliser la requête SQL, qui peut:PHP/MySQL Pagination

  • Prenez par exemple 5 entrées de DB, insérez les le 1er Page (1-5)
  • que de prendre 5 prochaines entrées du même DB et les insérer sur une autre page (5-10)
    et ainsi de suite :)

Merci)

+0

double possible de [MySQL sans pagination double interrogation?] (Http://stackoverflow.com/questions/818567/mysql-pagination-without-double-querying) –

Répondre

5
SELECT col FROM table LIMIT 0,5; -- First page, rows 1-5 
SELECT col FROM table LIMIT 5,5; -- Second page, rows 6-10 
SELECT col FROM table LIMIT 10,5; -- Third page, rows 11-15 

Lire le LIMIT section on the MySQL SELECT helppage. Si vous souhaitez afficher le nombre total de lignes disponibles, vous pouvez effectuer un nombre supplémentaire ou utiliser la fonction ROW_COUNT.

0

Il y a plusieurs façons de le faire, je pense que les meilleures performances suit un:

$ItemsPerQuery = 5; 
$CurrentPage = 0; //here you can add the current site through $_GET array or other ways, but don't forget to use mysql_real_escape_string(), because of mysql injection 

$Query = mysql_query("SELECT * FROM table LIMIT ".($ItemsPerQuery*$CurrentPage).",".$ItemsPerQuery); 

while($row = mysql_fetch_assoc($query)) 
{ 
    echo $row['column_name']; 
} 

Stuff vous devez utiliser:

+0

Ouais, eh bien merci) Je suis quelque chose comme ceci dans ma tête, mais je n'avais aucune idée de comment le réaliser correctement. – user313216

+0

Ce n'est pas correct, page 1 ne montrera pas les 5 premières entrées, la limite de départ est 1 * 5, devrait être 0 et tout à fait il devrait être ($ ItemsPerQuery * $ CurrentPage - $ ItemsPerQuery) – cypher

+0

uhm, true :) '$ CurrentPage' devrait être 0, car 0 * 5 = 0. désolé –

0

Si votre requête ne renvoie pas un caractère prohibitif quantité de résultats, pensez à utiliser Jquery pour le mettre en page avec une fonction Tablesorter. Il faut un tableau HTML correctement formaté et des pages, des tris, etc. à la volée ... pas besoin de variables de requête supplémentaires si vous ne le souhaitez pas. C'est tellement plus facile que d'aller sur la route de pagination PHP à part entière, et c'est beaucoup plus rapide pour l'utilisateur.

Mon exemple personnel préféré est ici: http://datatables.net/

Il peut ne pas convenir parfaitement à vos besoins, mais il est cool pour de nombreuses applications. Si vous le faites, n'oubliez pas de formater votre table avec le thead et le tbody de façon à ce que les éléments de la table puissent être correctement ramassés.