【问题标题】:php xml loop not working properly.php xml 循环无法正常工作。
【发布时间】:2017-04-19 13:08:12
【问题描述】:

我是 stackoverflow 的新手,但我关注这个网站很久了。我正在开发一个简单的 Web 应用程序,它将成为用户在注册后添加的一些音乐曲目的目录。 我已经从我在网上找到的 html5 模板开始了这个项目,现在我将它与我想要添加的所有功能(如注册和曲目上传)混合在一起。我添加了一个简单的注册系统以及将曲目信息写入 xml 文件的功能。我在旧版本的项目中使用了一个 mysql 数据库来存储所有数据,但由于一些问题我决定使用 xml 来管理曲目信息。 现在的问题是从 xml 文件中获取所有数据并将它们放入将用于显示标题、年份和艺术家姓名的 html 标签中,我正在使用的脚本无法正常工作并返回给我只有第一个轨道信息存储到 xml 文件中,其余节点不显示..

我用于加载 xml 文件并显示它的代码如下:

 <?php
 $xml=simplexml_load_file("tracks.xml") or die("Error: Cannot create object");
 foreach ($xml->children() as $tracks):
 for($i = 0; $i < 0; $i++){
    $title=$tracks->title[$i];
    $artist=$tracks->artist[$i];
    $relyear=$tracks->year[$i];
 }
 ?>

显示信息的 html 代码是这样的:

 <ul class="grid">
 <li class="grid__item">
 <a class="grid__link" href="#album-1" data-    playlist-1="" data-playlist-2=""> 
 <div class="img-wrap img-wrap--grid">
 <svg class="lp lp--grid">
 <use xlink:href="#icon-lp-mini"></use>
 </svg>
 <img class="img img--grid" src="img/album10.jpg" alt="album1" />
 </div>
 <span class="year">1999</span>
 <h2 class="artist"><?php echo $artist ?></h2>
 <h3 class="title"><?php echo $title ?></h3>
 </a>
 </li>
 </ul>

这部分代码重复了 12 次,因为砌体网格有时会显示 12 个项目。关于如何为网格中的每个不同轨道显示不同信息的任何想法?

【问题讨论】:

  • 我们可以获取 XML 粘贴示例吗?
  • for($i = 0; $i &lt; 0; $i++) 不会进入这个循环,因为当你从$i = 0 开始并检查$i &lt; 0 时,它会评估为假。

标签: php xml html


【解决方案1】:

您应该使用 DOMDocument 来获取您的数据。使用您的 XML 查看此工作示例: https://3v4l.org/RLK1U

【讨论】:

  • 好的,我会尝试使用您提供的代码。我只有一个问题,如果我删除脚本末尾的“ echo $artist.', '.$title.', '.$year."\n"; ”,然后我使用 或 .. 它会起作用还是我会遇到问题?我需要将信息打印到 html..
  • = $rows; ?> 如果我将它放在包含标题和艺术家信息的

    中,它似乎不起作用。我将再次尝试您今晚提供的代码。如果你想查看我开始的 html 完整模板代码,这里是链接:tympanus.net/Development/RecordPlayer 如你所见,这是一个很好的网格,我希望找到一个解决方案来保持这种风格并显示 xml 信息..

【解决方案2】:

我删除了 for 循环,但脚本继续只给我相同的标题、艺术家姓名和年份结果。

根据delboy1978uk的要求,这里使用我用来开发应用程序的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<releases>
<track>
<artist>salva</artist>
<title>nome</title>
<year>2015</year>
<label>maxa</label>
</track>
<track>
<artist>another test</artist>
<title>tracks</title>
<year>2022</year>
<label>buru</label>
</track>
<track>
<artist>re</artist>
<title>de</title>
<year>?</year>
<label>df</label>
</track>
<track>
<artist>yu</artist>
<title>tube</title>
<year>5</year>
<label>fy</label>
</track>
</releases>

文件由使用现有标记方案添加新数据的 php 脚本更新,因此如果我使用投影形式添加新轨道,它将作为新节点出现在文件中。

【讨论】:

    【解决方案3】:

    你的 foreach 循环中有 for 循环,这是没有意义的。 你的 for 循环也不正确-

    for($i = 0; $i < 0; $i++) {
    

    $i 以 0 开头。所以它永远不会超过这个零。

    【讨论】:

    • 你对我的回答投了反对票,但我不是第一个注意到这个错字的人。
    猜你喜欢
    • 2015-02-13
    • 2019-01-01
    • 2014-12-02
    • 2013-08-09
    • 2013-10-30
    • 2013-10-19
    相关资源
    最近更新 更多