2013-05-20 71 views
0

我有分頁此代碼對我的PHP腳本錯誤分頁結果

<?php 
session_start(); 
//Database stuff here 
$image = $_SESSION['image']; 
$cat = $_GET['cate']; 
$pagenum = $_GET['pagenum']; 
//PAGING BEGINS 
if(!isset($pagenum)){ 
    $pagenum = 1; 
} 

$data = mysql_query("SELECT * FROM tbl_product WHERE category = '$cat'"); 
$rows = mysql_num_rows($data); 
$page_rows = 4; 
$last = ceil($rows/$page_rows); 

if($pagenum < 1) 
    $pagenum = 1; 
elseif($pagenum > $last) 
    $pagenum = $last; 

$max = 'limit '.($pagenum - 1) * $page_rows.','.$page_rows; 
$data_p = mysql_query("SELECT * FROM tbl_product WHERE category = '$cat' $max"); 

while($row = mysql_fetch_array($data_p)) { 
    echo $row[1]; 
    echo $row[2]; 
} 

echo "<p>"; 
echo "--Page $pagenum of Last </p>"; 

if($pagenum == 1){ 
} else { 
    echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=1'>First</a>"; 
    echo ""; 
    $previous = $pagenum - 1; 
    echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'><-Previous</a>"; 
} 

if($pagenum == $last){ 
} else { 
    $next = $pagenum + 1; 
    echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next ->></a>"; 
    echo ""; 
    echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last</a>"; 
} 
?> 

當我運行它,第一頁顯示有4個項目按規定,但是當我點擊「下一步」,在$頁次變量變爲0,導致極限範圍內的負值($ max),從而導致SQL錯誤。我不知道爲什麼。我已經嘗試了幾個分頁腳本,並以相同的錯誤結束。當我嘗試移動到下一頁時,$ pagenum變爲0。請問我的錯誤是什麼?由於

+0

'$ rows'等於什麼?僅供參考,不應使用mysql_ *函數,並且容易受到SQL注入的影響。 – Pitchinnate

+0

這真的是一段糟糕的代碼......即使這些日子,人們仍在開發... – shadyyx

+0

@Pitchinnate $ rows = 15當我運行它時。但是當我點擊NEXT時變成0。 – dhani

回答

2

我想我知道這個問題,你必須:

echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last</a>"; 

問題可能是$_SERVER['PHP_SELF']回報的index.php你然後?pagenum=1將因此你所得到的URL:

的index.php ?pagenum = 1

所以你失去了你的類別變量。嘗試更改所有鏈接,如下所示:

echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=$last&cate=$cat'>Last</a>"; 
+0

不知道它是否應該是'cate',但這是您的代碼中所包含的內容,不確定它是否是錯誤的。但是這就是爲什麼在你去鏈接之後,行數會變爲0。 – Pitchinnate

+0

哇..這是真棒..它的作品。謝謝一堆。我很感激。 – dhani