浏览MySQL结果

时间:2011-11-22 23:58:31

标签: php mysql

我到处都搜索过,但什么也得不到。场景是当我从MySQL / PHP运行select语句时,我想使用Next&以前的按钮可以在结果中前后导航。

有谁知道我怎么能做到这一点? 以下是我运行查询的方式:select everything from members where hair = black;

这会返回8个结果,我有一个像details.php?id=3这样的页面,它接受id并显示详细信息。

我希望能够继续点击下一个按钮并从结果中转移到另一个ID。

我如何做到这一点?

感谢您的协助。

3 个答案:

答案 0 :(得分:1)

假设您拥有$allIds var中的所有ID,请尝试以下操作:

<?php
$id = (int) $_GET['id'];
$key = array_search($id, $allIds);
$nextId = $allIds[$key+1];
?>

答案 1 :(得分:1)

如果您打算使用“下一步”按钮每页显示1个产品详细信息,则

1) Get the total rows from table
2) Find total number of pages like
$totalPages = $totalRows; //since 1 record per page
3) Loop thru $totalPages value to generate next links
4) Get the id of product from page url $_GET
5) Query sql using te product id obtained frm GET

那就是基础知识,希望你能得到它

答案 2 :(得分:0)

嗯,这里有2个不同的范围可供解决,首先,当您查询时,您处于PHP /服务器端模式。 PHP获取一些数据,处理它,根据我对你的问题的知识显示一些数据,然后将其发送到浏览器。

接下来,您拥有客户端范围,客户端将HTML呈现到他的屏幕,并且可以单击“下一步”和“上一步”。当他这样做时,他向服务器发出请求,以获取基于当前记录的NEXT或PREVIOUS记录。

您有2个方案可以解决此问题:

1)将整个数据加载到内存中并扫描它以找到当前位置,查看是否有NEXT和PREVIOUS元素并响应用户的请求。如果用户要求NEXT,那么只需再移动一条记录。如果用户要求PREVIOUS项目,那么当使用WHILE或FOR / FOREACH进行扫描时,始终将内容保存在您看到的“lastitem”中,您可以将此“lastitem”用作PREVIOUS项目。

2)如果你有很多(我的意思是超过1000个)项目,你需要使用一个小的子查询魔法并使用SQL来解决这个问题。

select everything from members where hair = black AND id = XYZ ORDER BY id LIMIT 2;

这将返回CURRENT和NEXT元素。然后再次调用相同的查询,但这一次,命令它DESC,以便你的2个项目是当前和上一个。

select everything from members where hair = black AND id = XYZ ORDER BY id DESC LIMIT 2;

请注意,您可以按照自己的方式订购,目标是获得静态结果,总是以相同的方式运行,以便您可以反转它并获取所选项目周围的项目。

我希望这有助于你