2008-11-14 58 views
0

我的意思是什么是最有效的方式来获取有关您的网页的项目数量的信息,并使用LIMIT您需要的SQL查询。或者我应该得到所有的项目,然后用PHP函数裁剪数组?如何执行页面控制?

现在我做了2个查询:首先计算所有项目,第二个获得LIMIT所需的项目。

好吧,我会更具体。例如,我需要在我的页面上显示一个问题,并且回答这个问题。在页面底部有页面控制:链接到下一页,上一页等等。我想显示正确数量的链接(答案数量/ 20),并且当我转到任何链接时,我想要接收正确的答案(例如,3d页面上的41到60)。那么,获得多少项目(答案)以显示适当数量的链接并获得每个链接的正确答案的最佳方式是什么?

+0

我不知道你想要完成什么,你能重新解释一下这个问题吗? – 2008-11-14 08:14:06

+0

尝试寻找分页,有大量类似的问题已经回答了 – 2008-11-14 09:09:43

回答

1

我假设你想要计算你将阅读的行数,以便做一些分页或类似的?我不明白你在问题的背景下对LIMIT的需求。但是,如果您只需要计算找到多少行,请使用以下选项之一。

可以选择所有的行数,如:

select count(*) as counted, name, address 
from contact 

或被发现行:

SELECT SQL_CALC_FOUND_ROWS, name, address 
from contact 

这可能是MySQL的具体的我也不太清楚。

更新:

对于分页,你会做类似如下 - (伪代码)

$行=阵列($结果)
$ NUM_ROWS = SQL_CALC_FOUND_ROWS
$ per_page = 20
$页=小区($ NUM_ROWS/$ per_page)


$ rows_this_page =阵列()
$ rows_this_page = get_values($行,(分钟指数)$ PAGE_NUMBER * $ per_page - $ per_page,(最大索引)$ PAGE_NUMBER * $ per_page - 1)

+0

非常感谢,我需要LIMIT获得适当的项目(答案)或我sholdn'做到这一点? – user37590 2008-11-14 08:39:36

2

我想站立着试图假设你想知道查询中有多少项目/答案,但只能阅读最多20个项目的分页。

首先:你真的应该寻找一个分页包;很多很多人都遇到过同样的问题,并且可能为您的编程语言和框架提供免费/开源和专有解决方案。 (如果你说你用的是什么语言我敢肯定有人可以reccomend的解决方案适合您。)

不管怎样,我知道我想知道是如何工作的,所以这是它通常是如何做:

据我所知,分页代码通过使用select count(*) from tblX where something执行一个查询来计算页面数,并将该数字与每页项目数和使用上限(例如4.1 => 5)分开。

用于列出每页结果a 查询是必需的;不要担心计数查询比获取每个结果丢弃不需要的结果要快得多不要这样做(这就是成为this page顶级报道的接受者)。类似select * from tblX where something limit Y offset Z其中Y是每页的项目数,Z是(requested_page - 1)*Y;第1页将有偏移量0,第2页有偏移量20(如果这就是Y是什么)等等。

但是不要尝试手动实现它,这是不必要的,乏味和容易出错,更好地使用您的时间自定义现成的解决方案。