【发布时间】:2010-05-22 07:13:39
【问题描述】:
我有一个 SQL 查询,它返回一组数据(大约 40-50 个元组)。 我想使用 PHP 在 HTML 页面上一次显示 5 个结果。
我已经设法拥有正确的 SELECT 语句,但我无法使用“更多”按钮以 5 比 5 显示结果。
你能帮忙吗? 请注意,每次我调用查询时,数据都是随机的,因此无法设置限制并再次调用查询。我必须找到将结果存储在某处的方法,然后 5 x 5 显示它们。
【问题讨论】:
我有一个 SQL 查询,它返回一组数据(大约 40-50 个元组)。 我想使用 PHP 在 HTML 页面上一次显示 5 个结果。
我已经设法拥有正确的 SELECT 语句,但我无法使用“更多”按钮以 5 比 5 显示结果。
你能帮忙吗? 请注意,每次我调用查询时,数据都是随机的,因此无法设置限制并再次调用查询。我必须找到将结果存储在某处的方法,然后 5 x 5 显示它们。
【问题讨论】:
因此无法设置限制并再次调用查询。
是的,如果您使用相同的种子。
例如
SELECT column FROM table WHERE condition ORDER BY RANDOM(seed) LIMIT start, num
您在 PHP 中生成一次种子,并在下一次调用中重复使用它(使用 GET 传递它或将其保存到会话变量中)
【讨论】:
最简单的方法是使用会话:
session_start()
[..] // Your query stuff..
$ids = array();
while(($row = mysql_fetch_assoc($result)) !== false)
{
$ids[] = $row['id'];
// probably output
}
$SESSION['ids'] = $ids;
我们的想法是按照返回行的顺序存储查询的 ID。当用户点击“更多”时,您只需从会话中的数组中获取接下来的 5 个 ID,并构建您的 SQL 查询来获取行。
希望对您有所帮助。
干杯,
费边
【讨论】:
您实际上可以在查询中加载所有数据并将它们存储在某处,例如 DIVs 中的示例,对于第一个 div,您显示 5 行,而对于包含 5 行的其余 div,您最初将它们隐藏在当点击更多链接时,您会再次显示它们。事实上,你可以从 this script 那里得到一个想法,也就是为了同样的目的而写的。
<div id="div_1">
5 rows here, this is shown by default
</div>
<div id="div_2">
5 rows here, this is hidden initially
</div>
<div id="div_3">
5 rows here, this is hidden initially
</div>
and so on.
【讨论】: