【问题标题】:PHP XML paginator with foreach带有 foreach 的 PHP XML 分页器
【发布时间】:2017-11-21 17:02:00
【问题描述】:

我有代码,它从 xml 文件中获取信息(在 xml 中有示例 5 块“groupRecord”,可以更多)。我想每页显示 4 块。这部分我已经写过了。

$xmlDoc = new DOMDocument();
$xmlDoc->load('GetLoyalty5001.xml');

$totaldata = $xmlDoc->getElementsByTagName("groupRecord")->length;

$Pages = intval($_GET['page']);
if(!isset($Pages) || $Pages==0)
{
   $Pages=1;
}

$DataPerPage=4;
$numPages = ceil($totaldata/$DataPerPage);

$shopingdata = $xmlDoc->getElementsByTagName("groupRecord");
foreach($shopingdata as $key=>$datashoping)
{
    if(??)
    {

?>
   <tr>
      <td width="156">STORE ADDRESS</td>
      <td width="222">STORE ADDRESS</td>
      <td width="266">STORE ADDRESS</td>
      <td width="161">STORE ADDRESS</td>
      <td width="156">STORE ADDRESS</td>
   </tr>

<?php
    }
}
?>

在条件下我必须用什么代替问号?

【问题讨论】:

  • 代码物理行为异常
  • 好的,我更改了我的代码,现在页面链接可以正常工作并且显示是正确的。现在只剩下条件,每页显示 4 个块

标签: php xml pagination


【解决方案1】:

好吧,您已经拥有了所需的一切,只需使用 $numPages 即可获得您拥有的页数。

for ($a = 1; $a <= $numPages; $a++) {
    echo '<a href="?page=' . $a . '">' . $a . '</a>';
}

【讨论】:

  • Manuel,$numPages 帮不上忙,当我放 $numPages 时,链接显示 9999。可能代码有些错误
  • 你为什么使用implode()?也许这就是破坏它的原因,因为它需要两个参数,但你只给了一个。内爆数据集的长度没有意义(假设元素 1 的长度为 2,元素 2 的长度为 10,这将导致 210)
  • 说 $dataArray 必须是一个包含您的数据的数组,而现在它只是一个(内爆的)数字字符串。
  • 我改变 $dataArray = $shopingdatalen;现在在页面上链接它的工作,但在第一页显示一个块,而不是 4 个块
  • 我回家后仔细看看,这是一种奇怪的行为
【解决方案2】:

您很接近,但如何计算列表中项目数的想法似乎出错了。您需要做的就是使用您使用$xmlDoc-&gt;getElementsByTagName("groupRecord") 获取的元素数量。我已经减少了代码,这应该做你之后的事情......

$xmlDoc = new DOMDocument();
$xmlDoc->loadXML($xml);

$shopingdata = $xmlDoc->getElementsByTagName("groupRecord");
$perPage = 4;
$currentPage = intval($_GET['page']);

$numPages = ceil($shopingdata->length / $perPage);
if(!$currentPage || $currentPage > $numPages)
{
    $currentPage = 0;
}
$start = $currentPage * $perPage;
$end = ($currentPage * $perPage) + $perPage;

foreach($shopingdata as $key=>$datashoping)
{
    if($key >= $start && $key < $end)
    {
        ?>
    <tr>
       <td width="156">STORE ADDRESS</td>
       <td width="222">STORE ADDRESS</td>
       <td width="266">STORE ADDRESS</td>
       <td width="161">STORE ADDRESS</td>
       <td width="156">STORE ADDRESS</td>
    </tr>

<?php
   }
}

for($a=1;$a<=$numPages;$a++)
{
    echo '<a href="?page='.$a.'">'.$a.'</a>';
}

【讨论】:

  • 奈杰尔,不行。页面空白时显示4块,但点击页面1或2时,块显示错误。
猜你喜欢
  • 2021-02-22
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
相关资源
最近更新 更多