2010-06-22 4 views
6

Ich bin neu in PHP und SQL, und ich habe eine kleine Frage, wie SQL-Abfrage zu realisieren, das kann:PHP/MySQL Paginierung

  • Nehmen Sie zum Beispiel 5 Einträge aus DB, legt sie am 1. Seite (1-5)
  • als nächste 5 Einträge aus derselben DB nehmen und sie auf einer anderen Seite einfügen (5-10)
    und so weiter :)

Danke)

+0

mögliche Duplikate von [MySQL Seitennummerierung ohne Doppelabfrage?] (Http://Stackoverflow.com/questions/818567/mysql-pagination-without-double-querying) –

Antwort

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 

Lesen Sie die LIMIT section on the MySQL SELECT helpppage. Wenn Sie die Gesamtzahl der verfügbaren Zeilen anzeigen möchten, können Sie entweder eine zusätzliche Zählung durchführen oder die Funktion ROW_COUNT verwenden.

0

Es gibt mehrere Möglichkeiten, dies zu tun, ich denke, die schnellste Leistung eines folgt:

$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 sollten Sie verwenden:

+0

Ja, gut danke) Ich habe etwas wie das in meinem Kopf, aber ich hatte keine Ahnung, wie ich es richtig umsetzen könnte. – user313216

+0

Das ist nicht richtig, Seite 1 zeigt nicht die ersten 5 Einträge, das Startlimit ist 1 * 5, sollte 0 sein und insgesamt sollte es sein ($ ItemsPerQuery * $ CurrentPage - $ ItemsPerQuery) – cypher

+0

uhm, wahr :) die '$ CurrentPage' sollte 0 sein, weil 0 * 5 = 0 ist. Entschuldigung –

0

Wenn Ihre Abfrage kein Prohibitiv zurückgibt Anzahl der Ergebnisse, sollten Sie Jquery verwenden, um es mit einer Tablesorter-Funktion zu pagen. Es braucht eine richtig formatierte HTML-Tabelle und Seiten, Sortierungen usw. im laufenden Betrieb ... keine zusätzlichen Abfragevariablen, wenn Sie nicht möchten. Es ist so viel einfacher als die vollständige PHP-Paging-Route und ist viel schneller für den Benutzer.

Mein persönliches Lieblingsbeispiel ist hier: http://datatables.net/

Es ist nicht voll Ihre Bedürfnisse anzupassen, aber es ist für viele Anwendungen cool. Wenn Sie es tun, vergessen Sie nicht, Ihre Tabelle mit thead und tbody zu formatieren, damit sie die Tabellenelemente richtig aufnehmen kann.