在分页中跳回到右页

时间:2011-11-09 20:32:14

标签: php mysql

我的页面中有一个分页器,它列出了每页可编辑的几个项目。 如果某人决定编辑某个项目,则会将其发送到/ edit / 12这样的网址。 现在,当他们点击该页面上的“取消”时,我想将它们发送回正确的页面。

我需要做什么查询?我正在使用MySQL。我希望找到一个解决方案,我没有从表中获取所有行,但我担心如果不这样做就不可能......

4 个答案:

答案 0 :(得分:0)

将此作为onclick事件放在取消按钮上:

window.history.back(); return false;

功能类似浏览器中的后退按钮。

答案 1 :(得分:0)

分页网址是否基于?如果是这样,你可以在某个地方坚持下去,比如$ _SESSION var,甚至在$ _GET变量中传递它并在编辑后重新使用它吗?

答案 2 :(得分:0)

首先解决方法是使用

javascript:history.back(-1 - number_of_saves_in_this_session);

而不是history.back()。但这需要保持会话中的保存次数。

正确的方法,有效的变体,要求你有一些唯一的密钥订购的记录,如id。

因此,假设您有25条记录(ID 1-25)按降序ID排序,限制为10页(第1页 - 标识25-16,第2页标识15-6,第3页标识5-1)< / p>

你需要的是你的身份证之前的记录数量,你可以通过以下方式获得:

SELECT COUNT(id) AS number_of_records FROM table WHERE id > 12

现在添加一些基本数学来计算它是哪个页面

SELECT FLOOR(COUNT(id)/10) AS desired_page FROM table WHERE id > 12

将它乘以10,您已准备好使用OFFSET进行mysql查询。

最棘手的情况是你有更复杂的排序。主要思想如上所述,在您编辑的记录之前获取记录数。您只能将id转换为php数组并获取已编辑id的索引或在mysql中使用临时表和辅助变量:

SET @i=0;
SELECT FLOOR((`position`-1)/10) AS desired_page FROM (
    SELECT @i:=@i+1 AS position, `id` FROM `table` ORDER BY `name`, `date`, `other`, `other2` 
) tmp_tbl
WHERE `id` = 12

答案 3 :(得分:-1)

我建议你使用一个标志告诉应用你来自哪个页面。您可以将实际页面添加到编辑/添加网址,就像/ edit / 12 / p:1一样,当您取消它时,只需链接到main / p:1