2014-09-21 26 views
0

下面的代碼我設置了從xml放入分頁的結果,它大部分工作,但每次都缺少一行。php 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完全缺失第七屆結果下一個頁面後,將開始在15

+0

頁面變量,它是從0還是1開始? – 2014-09-21 03:45:26

+0

什麼頁面變量?這幾乎是所有代碼 – 2014-09-21 04:01:16

+0

當您在分頁的第1頁上單擊時,鏈接的外觀如何? – 2014-09-21 04:08:07

回答

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>"; 
    } 
} 
?> 

是不是更好嗎?對不起 - 我沒有親自嘗試。我也沒有修復「id ='title'」的多次出現,也沒有爲$ startPage設置默認值。可能還有更多。

+0

是的,它做到了...是的,我確信有足夠的清理!即時學習@哈里 – 2014-09-21 04:59:25