Obtenir les résultats est assez simple, en utilisant la limite comme indiqué ci-dessus basée sur le numéro de page. Vous pouvez utiliser une boucle pour imprimer les numéros de page.
Tout d'abord, disons que le numéro de page est envoyé sous la forme page=2 dans la chaîne d'interrogation.
$pagenum=(int)$_GET['page'];
if($pagenum<1){ $pagenum=1; }//perform a sanity check. You might also query to find the max page number and see that it's not higher than that.
Vous insérez ensuite le pagenum dans votre requête SQL comme un décalage, après l'avoir multiplié par le nombre de résultats par page moins les résultats par page.
Dans presque tous les cas, il faut utiliser une déclaration préparée pour mettre les paramètres fournis dans le SQL, bien sûr, mais dans ce cas, ce n'est pas strictement nécessaire. puisque vous êtes sûr que la variable est un int en raison du casting (la partie (int)). Je devais juste le souligner.
Disons que vous avez 4 articles par page. Vous pouvez soit utiliser deux arguments pour LIMIT, soit LIMIT et OFFSET séparément. Si vous utilisez seulement LIMIT, le premier nombre est le décalage, le second est le nombre de résultats.
$offset=$pagenum*4-4;//this means for page 1, start on 0, page 2 starts on 4, etc.
$sql="select * from the_table limit $offset,4";
C'est ainsi que vous obtenez les données pour un numéro de page donné. Ensuite, l'impression des numéros de page est une autre histoire. Cet exemple est basé sur la façon dont vous voulez que les pages se présentent, comme décrit ci-dessus.
for($i=pagenum+1;$i<20;$i++){
if($i<$pagenum+4){ ?>
<a href='stuff.php?page=<?php echo $i;?>'><?php echo $i;?></a>
<?php } elseif($i==$pagenum+4) { ?>
... <?php } elseif($i==20){ ?>
<a href='stuff.php?page=20'>20</a>
<?php } ?>