-1

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

但是,当我点击“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可以在我刚才提到的网站上找到。

4

1 回答 1

0

问题在于您的查询:

"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 条记录,并且不会关闭窗口的下限。

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

于 2012-08-02T12:44:36.403 回答