这个分页类出了什么问题


What is wrong with this pagination class?

我在寻找一个简单的分页脚本,并在这里找到了一个,这似乎运行得很好。

然而,当我点击"2"时,就像在第2页一样,它只是在已经存在的记录下面显示第2页的记录。所以基本上,如果我点击第214页,它仍然会在一页上显示所有记录。

我对PHP不是很有经验,所以我不知道paginator.class.php出了什么问题,希望这里的人能。

这是页面上应该进行分页的代码:

else {
$query = "SELECT COUNT(*) FROM products";
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_fetch_row($result);
$pages = new Paginator;  
$pages->items_total = $num_rows[0];  
$pages->mid_range = 9;  
$pages->paginate();  
$query1 = "SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit";
$result = mysql_query($query1) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
echo '<div style="margin-bottom:10px;display:inline-block;background-color:#E3E3E3;width:190px;height:200px;"><a href="'.$_SERVER['PHP_SELF'].'?serial='.$row['serial'].'"><img style="padding-top:10px;padding-left:25px;width:150px;height:150px;" src="'.htmlspecialchars($row['picture']).'"></a><br><div align="center"><b>'.htmlspecialchars($row['name']).'</b><br><h6>&euro;'.htmlspecialchars($row['price']).'</h6></div></div>&nbsp;';
};
echo '&nbsp;';
echo '<br><br><div style="margin-left:330px;">';
echo $pages->display_pages();
echo '</div>';
}

paginator.class.php可以在我刚才提到的网站上找到。

问题在于您的查询:

"SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit"

你需要确定$pages->limit的值。在我看来,这不是计算每页应该显示多少条记录(为了参数起见,我们说10条),然后确定你在哪个页面上并设置LIMIT条件。

应该设置为的内容如下:

LIMIT 30, 10

这是第4页——它显示的是30-40条记录,而不是我怀疑它在做的事情,也就是

LIMIT 40

这一行只会显示多达40条记录,而不会关闭窗口的下限。

仅供参考,我来看看手册中的MySQL SELECT语法。