sql >> Database >  >> RDS >> Mysql

Maak meerdere pagina's van een mysql-query

Zoals je al geraden hebt, moet je de LIMIET zoekwoord .

Het accepteert twee waarden (citaat) :

  • de offset van de eerste rij die moet worden geretourneerd
  • het maximale aantal rijen dat moet worden geretourneerd


In jouw geval moet je zoiets als dit gebruiken voor de eerste pagina:

select * from your_table order by ... limit 0, 50

En dan, voor de tweede pagina:

select * from your_table order by ... limit 50, 50

En voor de derde :

select * from your_table order by ... limit 100, 50

En zo verder;-)


Bewerken na de opmerking: om het paginanummer te krijgen, moet u het van uw URL's ontvangen, dat zou er als volgt uitzien:

http://www.example.com/page.php?pagenum=2

Vervolgens berekent u de eerste waarde voor de limiet, :

$offset = 50 * intval($_GET['pagenum']);

En injecteer het in uw zoekopdracht:

select * from your_table order by ... limit $offset, 50


Het maken van URL's naar de verschillende pagina's is nu een kwestie van URL's zoals deze:

http://www.example.com/page.php?pagenum=0
http://www.example.com/page.php?pagenum=1
http://www.example.com/page.php?pagenum=2
...

Als je weet dat je 700 elementen hebt, en 50 per pagina, dan heb je 700/50 pagina's;-)
Dus, zoiets als dit zou de slag moeten slaan:

for ($i=0 ; $i<700/50 ; i++) {
    // Use http://www.example.com/page.php?pagenum=$i as URL
}


Natuurlijk is 700 een waarde die waarschijnlijk kan veranderen, en niet hard-coded mag zijn:het moet worden bepaald uit de database, met behulp van een count vraag :

select count(*) as total
from your_table
...


  1. Waarom kan ik niet invoegen in MySQL?

  2. Hoe NULL als parameter te beperken tot SQL Server opgeslagen procedure?

  3. Hoe een unieke sleutel uit de mysql-tabel te verwijderen

  4. JDBC - Oracle ArrayIndexOutOfBoundsException