【问题标题】:Adding XML Pages [closed]添加 XML 页面 [关闭]
【发布时间】:2023-03-21 12:45:01
【问题描述】:

我得到下面的代码来拆分页面:

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

【问题讨论】:

  • 我建议学习 XLST。
  • 我想使用简单的 XML,但如果你得到答案,我会使用任何 XML 系列语言。
  • SimpleXML 是,IMO,用于非常琐碎的用例。我假设您的应用程序会随着时间的推移而增长,并且坚持使用 SimpleXMLElement 会变得很痛苦。试试 XSLT,如果你喜欢它,使用它会很愉快。主要是:)
  • 这不是你的代码。在你要求它之后,你得到了它。这不是 Stackoverflow 的工作方式。注意不要变成Help Vampire

标签: php html xml


【解决方案1】:

将评论转换为答案。

我建议使用 XSLT。毕竟,它的开发目的正是您所做的 - 将 XML 转换为其他 XML,或者一般来说,转换为文本。

PHP 有quite usable implementation,您将获得外部化模板的优势 - 即不会混合 PHP 代码和 HTML。

您正在解决分页问题。这可以使用document(...) 函数来实现,它为您提供了一个 XML 文档节点列表,您可以像这样使用它:

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

差不多吧。 $paths 是 XSLT 模板的参数,由 PHP 传递。

【讨论】:

  • 很抱歉不理解,但是 position() 是做什么的?
  • 我已经编辑了我的代码(添加 html),所以您可以帮助我编写我自己的代码。
  • 你能帮我写代码吗?我现在没有任何关于 XSLT 的信息,我希望现在解决这个问题。
  • 简单 - 将echo 拆分为几个回声;在您想要链接的地方,使用另一个 foreach 迭代 files
【解决方案2】:

您可以在 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>

【讨论】:

  • 谢谢,赏金尽快发放..
  • 我担心这是一个小错误,因为如果我有 20 个文件,我无法预览页面,如果我有 11 个文件,我看不到第二页,你能编辑代码吗?工作?谢谢@acrosman
  • StackOverflow 不是来为您编写所有代码的。很可能它与 $page 的处理有关。正如我上面提到的,我假设你在某个地方处理。我不会将 $page 变量从 $_GET 参数中拉出来,确保一个好的最小值,避免一个错误(可能是你所看到的),或者验证它甚至是一个数字。那是你的工作。
猜你喜欢
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
相关资源
最近更新 更多