2013-06-28 71 views
-4

我得到了下面的代碼,以分割頁:添加XML頁面

$files = glob('docs/*.xml'); 
$files = array_slice($files, ($page-1)*10, 10); 
foreach ($files as $file){ 
$xml = new SimpleXMLElement($file, 0, true); 
echo' 
    <tr> 
    <td>' . $xml->doctype . '</td> 
    <td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td> 
    <td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td> 
    <td>'. $xml->date .'</td> 
    <td>* * * * *</td> 
    <td></td> 
    </tr> 
    '; 
} 

但現在我不知道我怎麼可以添加頁面鏈接(如1 2 3 4 Next)這個代碼 我想過加入++到變量,但沒有對我工作。

我的問題是我怎樣才能以循環的方式添加頁面鏈接?

在此先感謝。

編輯:我忘了告訴你的迴音suppost是頁面(10個文件中1頁)

<ul> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>Next</li> 
</ul> 
+1

我建議學習XLST。 –

+0

我想使用簡單的XML,但是如果您爲我解答任何XML家庭語言的問題,我都會這樣。 – copypaste

+0

SimpleXML是IMO,用於非常簡單的用例。我會假設你的應用會隨着時間的推移而增長,堅持使用SimpleXMLElement將會成爲一種痛苦。嘗試XSLT,如果你喜歡它,很高興與它合作。主要:) –

回答

1

您可以在XSLT中做到這一點,但是當您在輸出中只需要一個簡單的傳呼機時,沒有理由引入其他語言。我打算假設$page變量在代碼中的其他地方正確定義。

$perpage = 10; // Avoid magic numbers 
$files = glob('docs/*.xml'); 
$file_count = count($files); 
$pages = $file_count/$perpage; 
$files = array_slice($files, ($page-1)*$perpage, $perpage); 
foreach ($files as $file){ 
$xml = new SimpleXMLElement($file, 0, true); 
echo' 
    <tr> 
    <td>' . $xml->doctype . '</td> 
    <td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td> 
    <td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td> 
    <td>'. $xml->date .'</td> 
    <td>* * * * *</td> 
    <td></td> 
    </tr> 
    '; 
} 
?> 
<ul> 
<?php 
for($i=1; $i<=$pages; $i++) {?> 
    <li><a href="link_to_page.php?page=<?php echo $i?>"><?php echo $i?></a></li> 
<?php } ?> 
</ul> 
+0

謝謝,賞金賞賜儘快.. – copypaste

+0

恐怕它有點bug,因爲我無法預覽頁面,如果我有20個文件,我不能看到第二頁如果我有11個文件,你可以編輯代碼,以便它能工作嗎?謝謝@acrosman – copypaste

+0

StackOverflow不在此處爲您編寫所有代碼。這很可能與處理$頁面有關。正如我上面提到的,我假設你處理某個地方。我不把$ page變量從$ _GET參數中取出,確保一個好的最小值,避免一個錯誤(可能是你所看到的),或者驗證它甚至是一個數字。這是你的工作。 – acrosman

1

評論轉換爲一個答案的所有東西。

我建議使用XSLT。畢竟,它的開發完全是爲了您的目的 - 將XML轉換爲其他XML,或者通常轉換爲文本。

PHP有quite usable implementation,您將獲得外部化模板的優勢 - 即不混合PHP代碼和HTML。

您正在解決分頁問題。

<ul> 
<xsl:foreach select="$paths"> 
    <li><xsl:value-of select="position()"/></li> 
<ul> 

或者這樣:可以使用該功能document(...),它給你的XML文檔節點,您可以像使用列表來實現。 $paths是從PHP傳遞的XSLT模板的參數。

+0

我很抱歉不理解,但是什麼位置()呢? – copypaste

+0

我已經編輯了我的代碼(添加html),以便您可以幫我解決我自己的代碼。 – copypaste

+0

'position()':http://stackoverflow.com/questions/93511/counter-inside-xslfor-each-loop –