Я знаю, что это обычная проблема, поскольку я искал ответы, прежде чем принимать решение о публикации, но я не могу найти решение.
ПРОБЛЕМА: У меня есть сценарий разбивки на страницы (PHP) для использования для моих результатов поиска. Как видно, результаты первой страницы показывают штраф, затем сбой при переходе на страницы 2, 3 и т. Д.
Я получаю ошибку «неизвестного индекса» для каждой из моих переменных, используемых в поиске, при нажатии на страницу 2, 3 и т. Д.
Итак, я $ _GET эти переменные из моей формы:
$_SESSION['var1']= $_GET['var1']; $_SESSION['var2']= $_GET['var2']; $_SESSION['var3']= $_GET['var3'];
Следует отметить: сеанс уже запущен в моем заголовке; Я использую $ _GET, потому что я предпочитаю не иметь предупреждение «повторно отправить», если пользователь возвращается «назад»; переменные очищаются (просто не показаны в коде как уже достаточно давно); Я должен использовать переменные $ _GET с циклом WHILE, поскольку они вычисляют расстояние, возраст и т. Д. Каждого результата.
Мой скрипт разбиения на страницы:
$limit = 4; $query = "SELECT COUNT(*) as num FROM $tableName"; $total_pages = mysql_fetch_array(mysql_query($query)); $total_pages = $total_pages['num']; $stages = 3; $page = mysql_escape_string(isset($_GET['page'])) ? (int)$_GET['page'] : 1; if($page) { $start = ($page - 1) * $limit; } else { $start = 0; } // Get page data $query1 = "SELECT * FROM $tableName ORDER BY joindate DESC LIMIT $start, $limit"; $result = mysql_query($query1); // Initial page num setup if ($page == 0){$page = 1;} $prev = $page - 1; $next = $page + 1; $lastpage = ceil($total_pages/$limit); $LastPagem1 = $lastpage - 1; $paginate = ''; if($lastpage > 1) { $paginate .= "<div class = 'hp1col'><div class='paginate'>"; $pagetotal = $total_pages.' Results'; // Previous if ($page > 1){ $paginate.= "<a href='$targetpage?page=$prev'>Previous</a>"; } else { $paginate.= "<span class='disabled'>previous</span>";} // Pages if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page){ $paginate.= "<span class='current'>$counter</span>"; }else{ $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";} } } // Next if ($page < $counter - 1){ $paginate.= "<a href='$targetpage?page=$next'>Next</a>"; } else { $paginate.= "<span class='disabled'>Next</span>"; } $paginate.= "</div></div>"; } while($row = mysql_fetch_array($result)) { if (($part1 >= $_SESSION['var1']) AND ($part2 <= $_SESSION['var2']) AND ($part3 <= $_SESSION['var3'])) { echo "[Results] } } echo $paginate;
Я попытался начать новый сеанс в этом операторе if, но это не помогло:
if ($page > 1){ $paginate.= "<a href='$targetpage?page=$prev'>Previous</a>"; } else { $paginate.= "<span class='disabled'>previous</span>";}
Я надеюсь, что кто-то может помочь. Я прошу прощения за плиту кода в вопросе, но я подумал, что лучше всего просто положить все для облегчения, надеюсь, кто-то может помочь.
благодаря