我得到了下面的代码来分割页面:
$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中所有的东西都假设是页面(1页中有10个文件)
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>Next</li>
</ul>
您可以在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>
将注释转换为答案
我建议使用XSLT。毕竟,它的开发目的正是将XML转换为其他XML,或者通常转换为文本。
PHP有非常有用的实现,您将获得外部化模板的优势,即不混合PHP代码和HTML。
你正在解决分页问题。这可以使用document(...)
函数来实现,它为您提供了一个XML文档节点列表,您可以使用它,例如:
<ul>
<xsl:foreach select="$paths">
<li><xsl:value-of select="position()"/></li>
<ul>
$paths
是XSLT模板的一个参数,从PHP传递过来。