Своими колхозными знаниями решил попробовать повтор SQL запроса с лимитом, где начало и конец выборки подставляются в зависимости от номера страницы, получаемого через адресную строку GET-запросом. Пришел к урлу формата index.php?p=n, где n - текущий номер страницы. Встроил проверку номера на то, что это целое и положительное число, жестко задал лимит (пока по 2 записи на страницу), определил количество страниц (результат запроса на подсчет количества строк в таблице, деленный на количество записей, которое планируется выводить на странице), проверил, что полученное значение номера не превышает общее количество страниц. После сформировал массив номеров страниц как диапазон значений от 1 до общего количества страниц. Далее, красиво вывел номера с ссылками на соответствующие страницы в теле индексной страницы
Собственно, проблема заключается в том, что главная страница (она же первая) корректно отображается только в случае, если урл чистый, или указан нулевой номер. При прямом заходе на index.php?p=1 наблюдаю следующую картину: показывается запись, которая должна быть второй на первой странице, и первая запись со второй страницы. Номера выше единицы работают нормально.
Пытался добавить дополнительное условие для первого номера - на этом скрипт прекратил работать и стал показывать содержимое первой страницы на всех номерах.
Код прилагается ниже (писал сам, ничего ниоткуда не копировал):
Основной контроллер articles.php - сниппет подсчета количества страниц, проверки текущего номера и формирования массива номеров
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- $per_page = 2;
- $pages = $total / ($per_page);
- $p = $_GET['p'];
- else{
- if (!$p) $start = 0;
- else $start = $p;
- $prev = $p - 1;
- $next = $p + 1;
- if (($p = 0) || (!$p)){
- $prev = 1;
- $next = 2;
- if ($next > $pages) $next = $pages;
- }
- }