我试图为我的网站创建一个简单的分页
我有一张桌子的行有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个项目。
答案 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的偏移量,依此类推。