2017-11-20 14 views
1

XMLファイルから情報を取得するコードを持っています(例では5つのブロック "groupRecord"があります)。そして私は4ページごとにショーをしたい。私はすでにこの部分を書きました。foreachを使用したPHP XMLページネイタ

$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 
    } 
} 
?> 

条件の中で疑問符の代わりに入れなければならないものは何ですか?

+0

コード物理学はOK、私は私のコードを変更し、現在のページへのリンクが動作し、ショーは右である – Pokrowsky

+0

動作がおかしい何をすべき。今すぐ残っている条件は、ページあたり4ブロック表示する – Pokrowsky

答えて

0

あなたはすでに必要なものすべてを持っています。あなたが持っているページ数をもたらす$ numPagesを使用してください。

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

Manuel、$ numPagesは助けます。$ numPagesを置くとリンクは9999と表示されます。おそらくコードが間違っています – Pokrowsky

+0

なぜ 'implode()'を使うのですか?たぶん、それは2つのパラメータを必要とするので、それを壊すものだが、あなたは1つだけを与えた。それはあなたのデータセットの長さを暗黙にすることを意味しません(要素1は長さ2、要素2は長さ10、結果は210になります) –

+0

$ dataArrayがデータを含む配列でなければならないとしたら、 (imploded)数字のストリング。 –

0

あなたは近くでしたが、リスト内のアイテムの数を計算する方法は間違っているようでした。 $xmlDoc->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>'; 
} 
+0

ナイジェル、動作しません。ページが空の場合は4ブロック、1ページまたは2ページをクリックするとブロックが正しく表示されません。 – Pokrowsky

関連する問題