我有一个sql查询返回了很多结果,我想生成一个html表来显示它们。问题是我不想将它们全部显示在一个页面上,我想一次抓取10个,并翻阅结果页面。从sql查询生成html报告
我想为每个查询返回100个结果,但我无法弄清楚如何在下一个查询中获取NEXT 100。
我有一个sql查询返回了很多结果,我想生成一个html表来显示它们。问题是我不想将它们全部显示在一个页面上,我想一次抓取10个,并翻阅结果页面。从sql查询生成html报告
我想为每个查询返回100个结果,但我无法弄清楚如何在下一个查询中获取NEXT 100。
-- return the first 100 rows
SELECT * FROM table LIMIT 0, 100
-- return the next 100 rows
SELECT * FROM table LIMIT 100, 100
-- and the next
SELECT * FROM table LIMIT 200, 100
您需要做的是将一个变量传递给您的脚本,该变量将为每个页面创建适当的SQL LIMIT语句。
您会在底部定义一个限制。第一页:
LIMIT 0,100
第二页
LIMIT 100,100
等。
当您在页面上放置'下一步'链接时,请创建一个$ _GET参数,其中表示start = 100。然后,使用该起始参数作为限制中的第一个值,并向其中添加100以获取第二个值。
那么,它到底会是什么样子:
if(empty($_GET['start']))
{
$start = 0;
}
else
{
$start = $_GET['start'];
}
$SQL = "SELECT * FROM TABLE WHERE 1=1 LIMIT ".$start.",100;";
query($sql);
$link = "<a href=\"?start=".$start+100."\">Next</a>";
如果要在进一步扩大,你可以添加一个num参数。这将允许用户控制他们看到的记录数量。所以:
if(empty($_GET['start']))
{
$start = 0;
}
else
{
$start = $_GET['start'];
}
if(empty($_GET['num']))
{
$start = 100;
}
else
{
$start = $_GET['num'];
}
$SQL = "SELECT * FROM TABLE WHERE 1=1 LIMIT ".$start.",".$num.";";
query($sql);
$link = "<a href=\"?start=".$start+100."&num=".$num."\">Next</a>";
当然,你想要sanatize /验证所有这些数字。
您将需要使用LIMIT sql语句。使用像SELECT * FROM table LIMIT $ var,100这样的查询,然后将url作为/page.ext?page=2。使用get(即php中的$ _GET ['page']),并将该数乘以100,以获得$ var值。显然,你需要确保安全。
您参考的内容称为分页,供将来参考。 – 2009-07-24 00:39:01
您正在使用特定的SQL数据库/方言吗?服务器/ sql语言通常决定如何对结果集进行分页。 – jrista 2009-07-24 00:42:26