Как сделать постраничный вывод?

276
20 марта 2017, 10:57

Подскажите что надо сделать для постраничного вывода?

Имею пока что простой вывод всего из таблицы:

function sql($sql,$array)
{
    global $db;
    try
    {
        $start =  $db->prepare($sql);
        if ($array) $start -> execute($array);
        else $start -> execute();
        return $start;
    }
    catch (PDOException $e) {
        exit("Не удалось выполнить запрос!");
    }
}
if ($_GET['m'] == 'news' OR !$_GET)
{
    $title = 'Новости';
    $news = sql("SELECT * FROM `News` ORDER BY `id` DESC LIMIT 100",false);
    foreach($news as $new)
    {
        $content.= '<div class="block" id="'.$new['id'].'">
        <div class="title"><a href="?n='.$new['id'].'" id="ajax" class="link">'.htmlspecialchars_decode($new['title']).'</a></div>
        <div class="new">'.htmlspecialchars_decode($new['content']).'</div>
        </div>';
    }
    if (!$content)
    {
        $content = Alert("Новостей нет.",false);
    }
}

Демо: https://w-0rld.ru/

Вывод кнопок планирую на такой верстке:

<div class="pages">
<!-- Текущая страница -->
<a class="disabled">1</a>
<!-- Другие страницы -->
<a href="?m=news&page=2">2</a>
<a href="?m=news&page=3">3</a>
<a href="?m=news&page=4">4</a>
<a href="?m=news&page=5">5</a>
<a href="?m=news&page=6">6</a>
<a href="?m=news&page=7">7</a>
<a href="?m=news&page=8">8</a>
<a href="?m=news&page=9">9</a>
<a href="?m=news&page=10">10</a>
</div>

Погуглил, везде старые примеры, не вызывающие доверия.

Answer 1
function sql($sql, $page = 1, $array) {
    global $db;
    $limit = 20; // 20 записей на страницу
    $from = ($page == 2) ? $limit : 0; // Начиная от 0 записи
    $to = ($page == 2) ? ($from + $limit) : $limit; // Заканчивая 20-ой
    if($page > 2) {
        $from = ($limit * $page) - $limit;
        $to = $from + $limit;
    }
    try {
        $start =  $db->prepare($sql . " LIMIT ".$from.", ".$to);
        if ($array) $start -> execute($array);
        else $start -> execute();
        return $start;
    }
    catch (PDOException $e) {exit("Не удалось выполнить запрос!");}
}

LIMIT в функцию передавать не нужно, в функции он сам подставится.

Вызов функции будет в таком виде:

$news = sql("SELECT * FROM `News` ORDER BY `id` DESC", 2, false); // в данном случае выбрана страница 2

Сам код не тестировал, но суть должна быть понятна.

READ ALSO
Сосчитать многомерный массив

Сосчитать многомерный массив

Массив формируется таким образом:

326
Почему cookie не работает при регистрации?

Почему cookie не работает при регистрации?

Здравствуйте, я новичок в программированииВесь вечер не могу решить проблему

356
Redirect Laravel

Redirect Laravel

Прописываю в роутах такой код для 'middleware' => ['web'], не работаетЕсть ли еще варианты запрета доступа к странице для гостей?

389
Выборка из базы по значению [дубликат]

Выборка из базы по значению [дубликат]

На данный вопрос уже ответили:

354