一些背景
所讨论的系统有大约一万条记录,允许用户通过不同搜索标准的“大量”阵列浏览或搜索。然后将结果显示在分页表中,范围从几页到数据库中的每个结果。
如果用户进行了大量过滤并最终得到结果并单击任意记录,则她将被带到一个新视图/edit/{record_id}
,在那里她可以查看该记录的所有详细信息。随时返回上一个搜索结果很容易,因为条件保留在搜索栏中,但是:
我想要达到的目标
如果用户要根据搜索结果进行大量更改,使用上一个和下一个按钮访问相邻记录而不返回结果会非常方便。
我已经能够使用id
s在基本级别上做到这一点
SELECT table.*, pn.p as previous_question, pn.n as next_question
from table,
(
SELECT id, lead(id) OVER w as n, lag(id) OVER w as p
FROM table
window w as (order by id $order)
) as pn
where table.id = $id
and pn.id = $id
这显然只适用于记录与数据库中的顺序相同的最简单的情况。我想要的是让他们在每种数据顺序情况下都能工作。不用说,对这些数据进行排序的方法几乎是无限的。
我一直在想什么
创建某种函数/工具,让我不让搜索 SQL 并像上面一样再次执行它,只使用搜索条件和偏移量而不是id
s
将结果中所有记录的顺序列表保存$_SESSION
在, 数据库或其他地方,然后简单地遍历列表以获取id
我需要的 s。
手头的工具
PHP、PostgreSQL、JS/jQuery。
TL;博士
无论用户单击“下一步”多少次,我都希望能够在不返回搜索的情况下获得下一个搜索结果。
----------
任何输入将不胜感激。相关文章的链接、处理方法甚至整个shebang ;)。能够在不吃掉所有服务器内存或过多的数据库访问的情况下解决这个问题也很好,尽管资源在这里并不是真正的问题。