2013-05-20 70 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