Список разбивки на страницы из массива

#php #sql #wordpress #pagination

#php #sql #wordpress #разбивка на страницы

Вопрос:

Привет из sql, я беру массив и создаю список продуктов. В настоящее время он отображает для меня список, но я хочу ограничить количество отображаемых элементов и использовать разбивку на страницы. Я создал код, но при нажатии далее не отображаются следующие элементы. Изменяет ссылку на domain.com/name/2 но элементы все те же. Когда я нахожусь на domain.com/name/2 нажатие кнопки далее не приводит к domain.com/name/3 и остается на domain.com/name/2 , дополнительно на domain.com/name/2 предыдущая кнопка не отображается. Моя ссылка на страницу domain.com/name / может быть, здесь проблема? Я буду благодарен за вашу помощь

 <?php

$page = $_GET['page'];
if (empty($page) || is_numeric($page) == FALSE) {
  $page = 1;
}
else {
  $page = $_GET['page'];
}
$items = 2;
$offset = ($page * $items) - $items;

global $wpdb;
$table = "items";
$names = $wpdb->get_col("SELECT Name FROM $table LIMIT $items OFFSET $offset");
$numbers = $wpdb->get_col("SELECT Number_it FROM $table LIMIT $items OFFSET $offset");

foreach (array_combine($numbers, $names) as $number => $name )
{
 echo '<p>'.$name.' <a href="name.php?product='.$number.'">'.$number.'</a></p>';
};
?>

<a href="domain.com/name/?page=<?php echo $page   1; ?>">Next Page</a>
<?php if ($page != 1) { ?>
<a href="domain.com/name/?page=<?php echo $page - 1; ?>">Previous Page</a>
<?php } ?>  

Комментарии:

1. вы уверены, что это $_GET['page'] то, что вы думаете, /2 вместо ?page=2 , вероятно, требует некоторой работы с Htaccess. Например, ваши ссылки расположены таким образом <a href="domain.com/name/?page=<?php echo $page 1; ?>"> — Так что же это domain.com/name/2 или domain.com/name/?page=2

2. у вас есть какие-либо доказательства?

3. В вашем коде также много «незначительных» ошибок, подобных этой <?php echo $page 1; ?> на последней странице у вас будет одна дополнительная кнопка «далее», которая указывает на страницу, которая не существует. Эту вещь вверху $page = $_GET['page']; if (empty($page) || is_numeric($page) == FALSE) { ... } можно было бы переписать, чтобы она была более краткой. $page = (empty($_GET['page']) || !is_numeric($_GET['page'])) ? 1 : $_GET['page']; поскольку он у вас есть, вы все еще открыты для проблем с неопределенным индексом. Это <?php if ($page != 1) { ?> бессмысленно, так как empty($page) будет перехватывать 0 значения и изменять их на 1 . etc….

4. @ArtisticPhoenix ?page= 2 на моем сайте автоматически изменен на / 2, но мне интересно, не является ли сбой кода результатом неправильного чтения ссылки. Но как вы проверяете какие-либо идеи?

5. Эти 2 SQL-запроса объединяют данные array_combine , но между ними нет физической связи, поэтому вы полагаетесь исключительно на порядок, в котором они хранятся. Что, вероятно, действительно плохая идея… Поскольку у вас действительно нет грантополучателя, то эти 2 записи связаны. Не говоря уже о том, что array_combine удалит все дубликаты в первом массиве и выдаст неустранимую ошибку, если два массива не имеют одинакового размера и т.д… Сейчас это моя работа, но по мере старения вашей базы данных у вас, вероятно, возникнут проблемы. Одна неуместная строка там, и вы будете комбинировать то, что не хотите, без очевидных ошибок.