Som du har gættet, skal du bruge LIMIT
søgeord
.
Den accepterer to værdier (citering) :
- forskydningen af den første række, der skal returneres
- det maksimale antal rækker, der skal returneres
I dit tilfælde bliver du nødt til at bruge noget som dette til den første side :
select * from your_table order by ... limit 0, 50
Og så til den anden side :
select * from your_table order by ... limit 50, 50
Og for den tredje :
select * from your_table order by ... limit 100, 50
Og så videre;-)
Rediger efter kommentaren: for at få sidenummeret, skal du modtage det fra dine URL'er, der ville se sådan ud :
http://www.example.com/page.php?pagenum=2
Derefter vil du beregne den første værdi for grænsen, :
$offset = 50 * intval($_GET['pagenum']);
Og injicer det i din forespørgsel :
select * from your_table order by ... limit $offset, 50
At konstruere URL'er til de forskellige sider er nu et spørgsmål om at få URL'er som disse:
http://www.example.com/page.php?pagenum=0
http://www.example.com/page.php?pagenum=1
http://www.example.com/page.php?pagenum=2
...
Hvis du ved, at du har 700 elementer og 50 pr. side, har du 700/50 sider;-)
Så noget som dette burde gøre tricket :
for ($i=0 ; $i<700/50 ; i++) {
// Use http://www.example.com/page.php?pagenum=$i as URL
}
Selvfølgelig er 700 en værdi, der sandsynligvis kan ændre sig, og den bør ikke være hårdkodet:den skal bestemmes ud fra databasen ved hjælp af en count
forespørgsel :
select count(*) as total
from your_table
...