简单的PHP MySQL分页(显示更多按钮,带参数)

时间:2014-05-01 11:38:50

标签: php mysql ajax pagination

我试图为我的网站创建一个简单的分页 我有一张桌子的行有3个值
id(AI)
命名
价格

SELECT * FROM `mytable` ORDER BY `id`LIMIT 10

我使用非常简单的MySQL请求来显示它,并使用JS / AJAX按钮来显示更多 按ID排序时,很容易显示更多内容 - 我知道最后一个ID,我将此信息添加到下一个请求中

SELECT * FROM `mytable` WHERE `id` > $lastid ORDER BY `id` LIMIT 10

但是,如果我按价格订购它,我如何创建相同的分页? 它可以是100件物品,价格相同,所以我不能写

WHERE `price` > $lastprice

因为它只显示价格相同的所有商品的10% 另外,我不能写

WHERE `price` > $lastprice AND `id` > $lastid

因为id最大的项目可以用更低的价格。 有什么想法让它发挥作用吗? 谢谢!
附:实际上它不是一个真正的分页,它只是一个按钮" SHOW MORE"通过AJAX从服务器接收下10个项目。

2 个答案:

答案 0 :(得分:1)

你可以通过javascript做到这一点,在调用ajax函数时,传递已经打印的行数,然后在mysql中将查询更改为

..... LIMIT "value passed", 10

答案 1 :(得分:1)

在这种情况下,您实际上并不需要WHERE子句。查询应该是这样的

SELECT * FROM `mytable` ORDER BY `price` DESC LIMIT <offset>, <results per page>

其中offset是要跳过的结果数,results per page是要返回的结果数(在您的情况下为10)。为了计算offset值,您需要页码而不是最后一个ID。如果你知道的话(我假设是后端的php):

$page = isset($_GET['page']) ? $_GET['page'] : 1;
$offset = ($page - 1) * <resutls per page>;

通过这种方式,您将在第一页上获得0的偏移量,在第二页上获得10的偏移量,依此类推。