php xml分页问题缺少一个结果

时间:2014-09-21 03:36:07

标签: php xml pagination

下面的代码我设置为将xml的结果放入分页中,它大部分都在工作,但每次都缺少一行。

所以我把它设置为7它每页只显示6个结果 这是我的代码:

$thispage= $_SERVER['PHP_SELF'];
$startPage = $_GET['page'];
$perPage =7;
$currentRecord = 0;

/  Start XML Parsing
    $dom = new DOMDocument();
    $dom->load('Playlist.xml');

    $xmlPath = new DOMXPath($dom);
    $arrNodes = $xmlPath->query('//channels/channel');

         foreach($arrNodes as $item){

         $currentRecord += 1;
         if($currentRecord > ($startPage * $perPage) && $currentRecord < ($startPage * $perPage + $perPage)){

       // Get Name
        $id=$item->getAttribute('id');

        // lets limit title
        $string=$item->getAttribute('name');
        $finTitle = (strlen($string) > 55) ? substr($string,0,52).'...' : $string;

        // lets limit  category
        $cat=$item->getAttribute('category'); 
        $category= (strlen($cat) > 20) ? substr($cat,0,17).'...' : $cat;
        // now we have the URL to pass on
        $vidUrl=$item->getAttribute('url'); 

    if($bgcolor=='#f1f1f1'){$bgcolor='#ffffff';}
    else{$bgcolor='#f1f1f1';}

    echo "<tr >";
    echo "<td bgcolor=$bgcolor id='title ' align=center>&nbsp;<font face='Verdana' size='2'>$id</font></td>"; 
    echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$finTitle</font></td>";
    echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$category</a></font></td>";
    echo "</tr>";
    }
}

谢谢我相信我一开始就错过了某些地方,我以为它就在这里: $ currentRecord + = 1; 但如果我将其更改为1或0则不会显示任何结果

下一页将从8开始完全错过第7页结果,之后将从15开始

1 个答案:

答案 0 :(得分:0)

如果$ currentRecord从零开始,我认为遵循代码会更容易。 $ currentRecord立即增加1,因此第一个使用的值为1。

在以下代码中,它从零开始:

<?php
$thispage= $_SERVER['PHP_SELF'];
$startPage = $_GET['page'];
$perPage =7;
$currentRecord = 0;

//  Start XML Parsing
$dom = new DOMDocument();
$dom->load('Playlist.xml');

$xmlPath = new DOMXPath($dom);
$arrNodes = $xmlPath->query('//channels/channel');

$startIdx = $startPage * $perPage;
$endIdx = ($startPage + 1) * $perPage;

foreach($arrNodes as $currentRecord => $item){

  if(($currentRecord >= $startIdx) && ($currentRecord < $endIdx)) {

    // Get Name
    $id=$item->getAttribute('id');

    // lets limit title
    $string=$item->getAttribute('name');
    $finTitle = (strlen($string) > 55) ? substr($string,0,52).'...' : $string;

    // lets limit  category
    $cat=$item->getAttribute('category'); 
    $category= (strlen($cat) > 20) ? substr($cat,0,17).'...' : $cat;
    // now we have the URL to pass on
    $vidUrl=$item->getAttribute('url'); 

    if($bgcolor=='#f1f1f1'){$bgcolor='#ffffff';}
    else{$bgcolor='#f1f1f1';}

    echo "<tr >";
    echo "<td bgcolor=$bgcolor id='title ' align=center>&nbsp;<font face='Verdana' size='2'>$id</font></td>"; 
    echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$finTitle</font></td>";
    echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$category</a></font></td>";
    echo "</tr>";
  }
}
?>

这样更好吗?对不起 - 我自己也没试过。我也没有修复过多次出现的&#34; id =&#39; title&#39;&#34;也没有为$ startPage设置默认值。可能还有更多。