У меня есть цикл while/for с тысячами результатов. Поскольку он содержит несколько полей, я использую таблицу для ее отображения. Тем не менее, при одновременном отображении тысяч результатов, это определенно замедлит работу. Как я могу отображать его в разбивке на страницы?
<table>
<?php $count = 1000;
for($a=1;$a<=$count;$a++) { ?>
<tr>
<td><?php echo $a; ?></td>
<td>This is number <?php echo $a; ?></td>
</tr>
<?php $i++;
} ?>
</table>
Мое единственное решение, не имеющее БД с данными, было бы передать ключ массива, на котором вы находитесь, на следующую страницу. Например:
$start = 1;
$end = 1000;
if(isset($_GET['record_number'])){
$start = $_GET['record_number'];
$end = $_GET['record_number'] + 1000;
}
for($a=$start; $a<=$end; $a++){
//code here
}
Кроме этого, вы можете подумать о создании списка файлов в БД, чтобы вы могли использовать параметр LIMIT.
Вот мой пример, он похож на ответ от @AnotherGuy
<form method="GET">
<input type="text" name="rowsPerPage">
<?php
for($i = 1; $i+1 < $count/$rowsPerPage; $i++){
echo '<input type="submit" name="page" value="'.$i.'">';
}
?>
</form>
<?php
$begin = (int)$_GET['rowsPerPage']*$_GET['page'];
$take = (int)$_GET['rowsPerPage'];
$sql = "SELECT ... LIMIT {$begin}, {$take}";
?>
Возможно, что код содержит "опечатки", но я надеюсь, что он даст вам новые идеи.
Я бы рекомендовал использовать GET вместо POST. GET будет сохранен в URL-адресе, таким образом, будет легче перезагрузить страницу, не теряя настройки страницы.
www.example.com?rowsPerPage=150&page=2
Если данные поступают из базы данных, вы можете ограничить набор результатов. Если вы используете MySQL, вы используете предложение LIMIT
. Это позволит вам получить только указанное количество строк.
SELECT title, description FROM posts LIMIT 25
Это позволит получить только 25 строк. Затем, если вы хотите получить результаты после строки 25, вы можете предоставить смещение. Это делается немного иначе, поскольку смещение происходит сначала в предложении LIMIT. Предоставляется только один аргумент. Вместо этого MySQL принимает свой предел. Чтобы выбрать следующие 50 строк, которые вы используете.
SELECT title, description FROM posts LIMIT 25, 50
Это может быть полезно для уменьшения набора результатов и повышения производительности/загрузки из-за меньшего количества данных, которые необходимо обработать.
Надеюсь, это поможет вам, счастливая кодировка!
Обновить
Это небольшое руководство по использованию предложения LIMIT в MySQL