Где может быть ошибка в скрипте пагинации (php)?

172
26 августа 2017, 01:37

Здравствуйте, товарищи!

У меня имеется скрипт, который должен выводить содержимое xml-файлов из каталога, но только тех, у кого в узле указан определённый id этой самой категории.

Ссылки должны быть вида:

http://site.org/category.php?catid=6?page=2

где catid — id категории, а page — страница с выводом заголовков статей.

Скрипт в настоящее время таки-выводит заданное количество заголовков статей (узлов xml-файлов, содержащих заголовки), но сам пагинатор не работает. Ссылки «1, 2, 3…» выводятся, но при переходе по ним, вывод остаётся тот же, как буд-то мы находимся на всё той же первой странице. Подскажите пожалуйста, где может быть недочёт и как его исправить.

Сам скрипт:

$perPage = 2;
$catid = (isset($_GET['catid'])) ? (int)$_GET['catid'] : 1;
$files = scandir($fileDir);
foreach($files as $num => $file) {
    $full = $fileDir . '/' . $file;
    if(is_file($full)) {
        if (!is_dir($fileDir . $file) && !preg_match('/^article.*\.xml$/i', $file)) continue;
        $files[$file] = filemtime($full);
    }
    unset($files[$num]);
}
arsort($files);
$total = count($files);
$pages = (int) ceil($total / $perPage);
if($total > 0) {
    $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
    if($page > $pages or $page < 1)
    exit('Нет такой страницы');
    $start = ($page - 1) * $perPage;
    $out = array_slice($files, $start, $perPage);   
    foreach($out as $file => $date) {
        $articleFile = simplexml_load_file($fileDir . $file);
        if ((string)$articleFile->categoryid == $catid) {
            echo '<li><a href="' . $articleFile['id'] . '">' . $articleFile->headline . '</a></li>';
        }   

    }
    if($pages > 1) {
        echo '<div>';
        for($pr = '', $i = 1; $i <= $pages; $i++) {
        echo $pr = (($i == 1 || $i == $pages || abs($i - $page) < 2) ? ($i == $page ? " $i " : '<a href="/category.php?catid=' . $catid . '?page='. $i .'">' . $i . '</a> ') : (($pr == ' ... ' || $pr == '') ? '' : ' ... '));
        }
        echo '</div>';
    }   
}
else {
    echo '<p>Нет файлов для отображения на этой странице</p>';
}
Answer 1

Опечатался или ошибка в ссылке? Должно быть http://site.org/category.php?catid=6&page=2 т.е. значок & вместо ? между параметрами в URL. ? ставиться только перед первым параметром, таким образом отделяя адрес страницы от параметров.

READ ALSO
Не получается подключить composer

Не получается подключить composer

Добрый деньЯ пытаюсь подключить composer к сайту на modx revolution на хостинге beget

194
Передавать ли $_POST явно?

Передавать ли $_POST явно?

Можно сделать

147
Когда стоит наследоваться от класса?

Когда стоит наследоваться от класса?

Ведь можно сделать просто:

166
Call to undefined function mysql_connect() [дубликат]

Call to undefined function mysql_connect() [дубликат]

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

198