我正在显示一个列表。
用户可以编辑任何项目。
我正在显示下一个上一个按钮,当点击它时,它会动态地从db中获取下一个以前的记录。没有页面重新加载。
这与id配合得很好。例如how can i get next and previous field id with php from mysql 和 MySQL next/previous ids (arbitrary sort order)
目前我正在显示
按名称asc
从表格顺序中选择*
以及我曾经使用的下一个和之前的......
select * from table where id > $id order by name asc limit 1
select * from table where id < $id order by name desc limit 1
以上是我搜索互联网时的结果。
按此顺序,id将不在一个顺序中,所以我不能使用id来获取下一个和上一个记录,我认为是这样。
我希望获得关于任何其他字段的下一个和之前的记录,而不是id。
所以有点像这样。
从表中选择*,其中id&gt; 5个订单 按名称asc或desc limit 1。
什么是查询?
注意
有15000条记录。这是默认的一半填充。其余的一半应该由管理员更新。因此,在管理员更新了一条记录之后,我不再重新加载页面,而是获取另一条记录并在屏幕上动态显示,以便他可以继续更新内容。没有任何页面重新加载。他只需点击更新即可显示下一条记录。他可以选择上一个或下一个按钮来在记录之间导航。
答案 0 :(得分:4)
您需要过滤名称的值:
SELECT * FROM `table`
WHERE name < 'Foo'
ORDER by name DESC
LIMIT 1
仅当名称是唯一的时才有效。如果可能存在重复,则需要打破平局。例如,您可以使用id列来打破中断。
SELECT * FROM `table`
WHERE name < 'Foo' OR (name = 'Foo' AND id < 42)
ORDER by name DESC, id DESC
LIMIT 1
答案 1 :(得分:0)
你最好做更多传统的分页。
$itemsPerPage = 10;
$page = (int)$_GET['page']; // do more validation to check this is a valid integer
$start = ($page * $itemsPerPage) - $itemsPerPage;
$sql = "SELECT * FROM `table`WHERE name < ? ORDER by name DESC limit $start, $itemsPerPage";