PHP分页无序列表项


PHP pagination unordered list item

我从外部源获取一个数组值,并将其转换为无序列表以显示在网页上。但有时列表的内容非常大,无法显示在单个页面上。是否可以对内容进行分页,以便每页显示10个列表项。

   <div id="a">
      <div id="object3">TRIVIA</div>
      <div class="details">
        <?php foreach ($tri as $key): echo "<ul><li>$key</li></ul>"; endforeach ?>
      </div>
    </div>

是的,但它实际上需要编写一个分页器。

然而,您需要能够获得计数,并能够基于url字符串显示一系列结果,如?start=10&end=20.

剩下的只是使用for循环或带有(if(count<start)continue;)(if(count>end)break;) 的foreach

您还需要生成链接,以便至少前进和后退,如果您处于总计数的开始或结束,则不生成链接。

您需要传递给脚本的唯一信息是页码,因为页码是页面之间唯一会发生变化的信息。

您还需要了解其他一些信息,例如numberPerPage,但它们包含在脚本中,永远不会更改。

下面是一个MySQL语句,它将帮助您开始:

SELECT columnList
FROM table
ORDER BY someColumn
LIMIT 10,5

LIMIT子句说跳过前10条记录,然后给我接下来的5条。这是所有使用MySQL后端的分页脚本的基础和起点。

那么你怎么知道偏移量呢

根据我前面提到的外部信息,即当前页码,再加上我前面也提到的内部信息,即每页的编号。

如果你想查看第5页,并且你打算每页显示10个元素,那么很容易看出你想从第41行开始:

  • 第1页显示了元素1-10
  • 第2页显示了要素11-20
  • 第3页显示元素21-30
  • 第4页显示元素31-40
  • 第5页需要显示元素41-50

你可以这样计算偏移量:

$offset = $numPerPage * ($curPage - 1)

在第1页上,偏移量将为0(这正是您想要的)。

在第2页上,偏移量将为10,依此类推

这里有一个链接,指向一个更全面的分页教程。

PEAR的Pager包已经为该任务制作完成。请参阅示例。