我得到了以下代码来分割页面:
$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
)
我已经考虑过将++添加到变量中,但这对我没用。
我的问题是如何以循环方式添加页面链接?
提前致谢。
编辑:我忘了把echo suppost的所有内容都告诉你页面(1页10个文件)<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>Next</li>
</ul>
答案 0 :(得分:1)
将评论转换为答案。
我建议使用XSLT。毕竟,它的开发完全是出于您的目的 - 将XML转换为其他XML,或者通常转换为文本。
PHP有quite usable implementation,您将获得外部化模板的优势 - 即不会混合使用PHP代码和HTML。
你正在解决分页问题。这可以使用document(...)
函数来实现,该函数为您提供了一个XML Document节点列表,您可以使用它们:
<ul>
<xsl:foreach select="$paths">
<li><xsl:value-of select="position()"/></li>
<ul>
或者是这样。 $paths
是从PHP传递的XSLT模板的参数。
答案 1 :(得分: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>