Как вывести на экран long while / for цикл в нумерации страниц?

0

У меня есть цикл 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>
  • 0
    Откуда приходят ваши результаты? DB? Если да, то какого рода и мы можем увидеть ваш код запроса? В большинстве случаев разбивка на страницы легче обрабатывать в запросе.
  • 0
    Данные не из базы данных. Это список всех файлов из нескольких папок, которые уже объединены в массив.
Теги:

3 ответа

1
Лучший ответ

Мое единственное решение, не имеющее БД с данными, было бы передать ключ массива, на котором вы находитесь, на следующую страницу. Например:

$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.

  • 0
    Спасибо. Я попробую это.
1

Вот мой пример, он похож на ответ от @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

1

Если данные поступают из базы данных, вы можете ограничить набор результатов. Если вы используете MySQL, вы используете предложение LIMIT. Это позволит вам получить только указанное количество строк.

SELECT title, description FROM posts LIMIT 25

Это позволит получить только 25 строк. Затем, если вы хотите получить результаты после строки 25, вы можете предоставить смещение. Это делается немного иначе, поскольку смещение происходит сначала в предложении LIMIT. Предоставляется только один аргумент. Вместо этого MySQL принимает свой предел. Чтобы выбрать следующие 50 строк, которые вы используете.

SELECT title, description FROM posts LIMIT 25, 50

Это может быть полезно для уменьшения набора результатов и повышения производительности/загрузки из-за меньшего количества данных, которые необходимо обработать.

Надеюсь, это поможет вам, счастливая кодировка!

Обновить

Это небольшое руководство по использованию предложения LIMIT в MySQL

  • 0
    Благодарю. К сожалению, данные не из базы данных. Это список всех файлов из нескольких папок, которые уже объединены в массив.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню