foreach循环的简单分页

use*_*117 3 php pagination

我需要分页显示WordPress插件生成的输出。该插件从日期数据库中检索某个产品组的所有产品。基本代码是:

<?php 
    foreach ((array)$this->view['data']['produkte'] as $p) 
    { ?>
    ...some html code here
    } 
?>
Run Code Online (Sandbox Code Playgroud)

其中$p是一个多维数组,其中包含单个产品的数据。我想将输出限制为10种产品,并为此创建一个简单的分页。该插件非常复杂,并且使用嵌套模板,因此在这种情况下,可能无法选择自定义查询。

如果有人可以指出我正确的方向,那就太好了。谢谢!

这是最终代码。非常感谢您的宝贵帮助!

<?php
$nb_elem_per_page = 3;      
$page = isset($_GET['seite'])?intval($_GET['seite']-1):0;
$data = (array)$this->view['data']['produkte'];
$number_of_pages = intval(count($data)/$nb_elem_per_page)+2;
$page_no = $_REQUEST['seite'];
foreach (array_slice($data, $page*$nb_elem_per_page, $nb_elem_per_page) as $p) 
  { ?> some HTML here... <?php } ?>
<?php if (count($data) > $nb_elem_per_page) { ?>       
<ul id='paginator'>
  <?php
  for($i=1;$i<$number_of_pages;$i++){
  if ($i == $page_no) {?>
    <li><?php echo $i ?></li>
    <?php }
    else { ?>
    <li><a href="<?php echo get_permalink(); ?>?show=<?php echo $_REQUEST['show']; ?>&seite=<?=$i?>"><?php echo $i ?></a></li>
  <?php }} ?>
</ul>
<?php { ?>
Run Code Online (Sandbox Code Playgroud)

由于默认网址已经包含一个查询字符串,因此我不得不修改代码。我不希望当前站点在分页中具有链接。这使我获得分页查询字符串的编号:

$page_no = $_REQUEST['seite'];
Run Code Online (Sandbox Code Playgroud)

然后,我可以使用简单的if语句轻松更改分页链接:

if ($i == $page_no) {...}?>
Run Code Online (Sandbox Code Playgroud)

再次感谢!

Loï*_*oïc 5

您可能需要对此进行一些修改,但这将是这样的:

$nb_elem_per_page = 10;
$page = isset($_GET['page'])?intval($_GET['page']-1):0;
$data = (array)$this->view['data']['produkte'];
$number_of_pages = intval(count($data)/$nb_elem_per_page)+1;


<?php foreach (array_slice($data, $page*$nb_elem_per_page, $nb_elem_per_page) as $p) { ?>
...some html code here
<?php} ?>

<ul id='paginator'>
<?php
for($i=1;$i<$number_of_pages;$i++){?>
    <li><a href='./?page=<?=$i?>'>$i</a></li>
<?php}?>
</ul>
Run Code Online (Sandbox Code Playgroud)

  • 那成功了:`$ number_of_pages = intval(count($ data)/ $ nb_elem_per_page)+2;` (2认同)