我知道這是一個常見的問題,因爲我在決定發佈之前搜索答案,但我似乎無法找出解決方案。
問題:我有一個分頁腳本(PHP)用於我的搜索結果。顯然,第一頁結果顯示正常,然後在移到第2,3頁時失敗。
當點擊進入第2頁時,我在搜索中使用的每個變量都出現「未知索引」錯誤,3等
所以我$ _GET這些變量從我的形式:
$_SESSION['var1']= $_GET['var1'];
$_SESSION['var2']= $_GET['var2'];
$_SESSION['var3']= $_GET['var3'];
注意要點: 一個Session已經在我的頭開始;我使用$ _GET,因爲如果用戶返回'',我不希望發生'重新提交'警告;變量全部被清除(僅在代碼中未顯示足夠長的時間);我必須在WHILE循環中使用$ _GET變量來計算每個結果的距離,年齡等。
我的分頁腳本:
$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>";}
我希望有人可以提供幫助。我對這個問題中的代碼片斷表示歉意,但我認爲最好只是將所有內容放在一起,希望有人能夠提供幫助。
謝謝
請更清楚地定義*問題*。 「搜索結果不工作在第二頁」是*不是一個普遍已知的問題... – deceze
對不起,現在將修改。花了這麼久格式化代碼我忘了我沒有提到錯誤:) – Dan
請注意,「LIMIT XXX OFFSET YYY」子句意味着MySQL仍然需要計算整個結果集。相反,如果joindate被編入索引,請考慮使用'WHERE joindate <= <先前頁面上的最後加入日期> LIMIT XXX''。 – KyleWpppd