首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在列表中使用物理页面吗?

我应该在列表中使用物理页面吗?
EN

Stack Overflow用户
提问于 2011-08-31 17:10:51
回答 2查看 115关注 0票数 0

我有一张表,里面有很多记录。现在,我在一个页面上选择它们。但我想创建一个列表。该列表将包含多个(大约5-10)页。

为此,我应该使用物理页面(page1.php | page2.php | page3.php)还是虚拟页面(page.php?number=1 | page.php?number=2 | page.php?number3)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-31 17:18:01

在你传递页码的地方,限定使用一个页面。

否则它几乎是静态的,因为每次你需要“更多的页面”时都需要创建一个额外的页面,但是如果你给一个页面传递了一个偏移量,你可以使用'LIMIT offset,pagesize‘将其添加到查询中。

如下所示:

代码语言:javascript
复制
$pagesize = 30;
$data = YOUR_QUERY_METHOD(YOUR_QUERY . ' LIMIT ' . $pagesize*$_GET['number'] . ', ' . $pagesize);
票数 0
EN

Stack Overflow用户

发布于 2011-08-31 17:33:13

我将在我的回答中重新表述你的问题,然后回答我的问题……

快速概述

您所拥有的是一个结果集,您希望这个结果集能够对结果进行分页,这样就不会一次显示结果中的所有项。您希望能够在每页显示任意数量的结果,但最有可能的是5或10个结果。

回答

好的,让我们假设您有您的结果集,它是在您查看index.php时加载的。

但是,您想要做的是仅显示结果集中的一定数量的项目。

现在我将虚构一个虚构的结果集。

代码语言:javascript
复制
$results = array( 
array( 'id' => 1, 'Apple'),
array( 'id' => 2, 'Orange'),
array( 'id' => 3, 'Banana'),
array( 'id' => 4, 'Pinapple'),
array( 'id' => 5, 'Kiwi'),
array( 'id' => 6, 'Starberries'),
array( 'id' => 7, 'Blackberries'),
array( 'id' => 8, 'Melon'),
array( 'id' => 9, 'Opal'),
array( 'id' => 10, 'Zuchini'),
array( 'id' => 11, 'Peach'),
array( 'id' => 12, 'Pear'),
array( 'id' => 13, 'Plum')
);

好的,现在,这可以是我们想象的结果集。对于第1页,您要做的是仅检索前5个项目。

因此,当有人访问index.php?page=1index.php时,他们只能得到(苹果、橙子、香蕉、Pinapple和奇异果)。

这称为分页。您可以在检索到结果后对其进行分页,也可以在获得结果之前使用mySQL中的offsetslimits进行分页。因为您没有说您正在使用mySQL,所以我假设您已经有了所有的结果。

现在,如果你有一个类似这样的请求

代码语言:javascript
复制
GET /index.php?page=1

然后你可以这样做:

代码语言:javascript
复制
$page = $_GET['page'];
$page ? is_numeric($page) && isset($page) ? $page : 1;
$count = 5;
$offset = $page == 1 ? 0 : (($page * $count) -1 ) - $count;
// Slice now contains your results which you can use to foreach() through    
$slice = array_slice($results, $offset,$count);

结果

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [id] => 1
            [0] => Apple
        )

    [1] => Array
        (
            [id] => 2
            [0] => Orange
        )

    [2] => Array
        (
            [id] => 3
            [0] => Banana
        )

    [3] => Array
        (
            [id] => 4
            [0] => Pinapple
        )

    [4] => Array
        (
            [id] => 5
            [0] => Kiwi
        )

)

在本例中,我没有进行任何实际的过滤,也没有认真地验证$_GET页面的格式是否正确,但是您应该明白这一点。

还有大量的资源可以让这一切变得更容易。我个人是Zend_Paginator的超级粉丝,我使用它来满足我所有的分页需求。查看此处Zend_Paginator

还有其他资源:

  • http://www.lotsofcode.com/php/php-array-pagination.htm
  • http://tiffanybbrown.com/2008/12/14/simple-pagination-for-arrays-with-php-5/
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7254864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档