PHP Pagination, значения сбрасываются к значениям по умолчанию при нажатии на следующую

0

создали веб-сайт, на котором отображаются заказы из базы данных. Я только показываю 10 заказов на страницу, поэтому я создал также разбивку на страницы. Чтобы получить заказы, вам нужно установить идентификатор, и я сделал все, чтобы скомпилировать идентификатор непосредственно в php файл. То, что я пытаюсь сделать сейчас, - это получить форму выбора, чтобы пользователь мог самостоятельно выбрать идентификатор.

Я создал форму выбора, где я показываю все идентификаторы в качестве параметров, и я могу выбрать идентификатор и получить заказы, но когда я нажимаю кнопку "Далее", все исчезает. Если я снова выберу идентификатор и обновлю страницу, тогда появятся все заказы на стр. 2. Кажется, что значения сброшены к умолчанию, но я хочу, чтобы они оставались неизменными каждый раз, когда вы нажимаете "Далее". Как я могу это решить? Очень благодарен за любую помощь!

В? Page = 1 это отображает идентификатор, когда я нажимаю "Далее" и вводим? Page = 2, он повторяет "нет идентификатора",

if(isset($hejsann[$Option])) {
    echo $hejsann[$Option];
} else { 
    echo "no id selected";
}

Это выбранная форма, в которой я выбираю идентификатор

<form method="post">
<fieldset>
<select name="taskOption" required>
<option value="" disabled selected>Choose a group</option>
<?php

     if (isset($_POST['taskOption'])) { 
        $Option = $_POST['taskOption'];
       }
    while($hej < count($hejsan)) {
            if($hej==$_POST['taskOption']){
               $selected = "selected=selected";
             }else{
               $selected = "";
             }
        echo '<option value="' . $hej . '" '.$selected .'>' . $hejsan[$hej] . '</option>';
        $hej++;
    }

    ?>
</select>
<input type="submit" value="Find bookings">
</fieldset>
</form>

Это разбиение на страницы

<?php
$var = $_POST['taskOption'];
$book = bookings($hejsann[$var]);

$page = (int) $_GET['page'];
if ($page < 1) $page = 1;

$resultsPerPage = 10;
$startResults = ($page - 1) * $resultsPerPage;
$numberOfRows = count($book);
$totalPages = ceil($numberOfRows / $resultsPerPage);

$output = array_slice($book, $startResults, $resultsPerPage);

$b = 0;
while($b < count($output)) {
echo $output[$b];
$b++;
}

if($page > 1) {
echo '<a href="?page='.($page - 1).'"><span>Back</span></a>&nbsp';
}

for($i = 1; $i <= $totalPages; $i++)
{
if($i == $page)
    echo '<strong>'.$i.'</strong>&nbsp';
else
    echo '<a href="?page='.$i.'"><span style="margin-left: 15px;">'.$i.'</span>    </a>&nbsp';
}

if ($page < $totalPages) {
echo '<a href="?page='.($page + 1).'"><span style="margin-left: 15px;">Next</span></a>&nbsp;';
}

if($page == $totalPages && $page > 1) {
echo '<a href="?page=1"><span style="margin-left: 15px;">First</span></a>&nbsp';
}
?>
  • 0
    Я думал об использовании сеанса, но я не знаю, как это сделать, когда все в одном файле, я только ссылку на page.php? Page = 1 на page.php? Page = 2
  • 0
    Не ясно, как эти фрагменты сочетаются друг с другом. Они все на одной странице? Вы щелкаете по ссылке или делаете что-то, чтобы перейти на следующую страницу? Если вы просто введете page = 2, то taskOption не будет установлен ...
Показать ещё 6 комментариев
Теги:
session
pagination

1 ответ

0

Данные $_POST не включаются автоматически в строку get при нажатии ссылки. Ссылки не могут содержать почтовые данные, поскольку они являются чистыми текстовыми строками. Чтобы передать другое значение по ссылке, вам нужно добавить его в строку GET URL-адреса. Используйте http_build_query для генерации строки get из массива, например:

echo $url.'?'.http_build_string($_POST);

Вывести URL-адрес с почтовыми данными, полученными на странице, добавленной в URL-адрес.

Ещё вопросы

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