Получение результатов достаточно просто, с использованием лимита, как указано выше, в зависимости от номера страницы. Вы можете использовать цикл для распечатки номеров страниц.
Сначала, скажем, номер страницы отправляется как стр = 2 в строке запроса.
$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.
Затем вы вставляете страницу в свой SQL-запрос как смещение, умножая его на количество результатов на странице минус результаты на странице.
Почти в каждом случае, конечно, следует использовать подготовленный оператор для помещения с использованием предоставленных параметров в SQL, однако в этом случае это не является строго обязательным , поскольку вы уверены, что переменная представляет собой int из-за приведения ( (int) часть). Просто должен был это подчеркнуть.
Скажем, у вас есть 4 элемента на странице. Вы можете использовать два аргумента для LIMIT или LIMIT и OFFSET отдельно. Если вы используете просто предел, первое число - это смещение, второе - это число результатов.
$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";
Итак, вот как вы получаете данные для данного номера страницы. Затем распечатка номеров страниц - это другая история. Этот пример основан на том, как вы хотите, чтобы страницы выглядели так, как описано выше.
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 } ?>