将XML记录解析为多个选项卡(使用PHP或jQuery)

时间:2012-09-27 13:16:47

标签: php jquery parsing tabs xml-parsing

我目前正在制作DJ的网站,他使用GigaTools进行演出。 目前,我使用php解析了GigaTools feed(xml)并在网站上显示了一个表格。但这仅限于显示的最大数量(12)的记录,因为这适用于网站。

这是我目前正在使用的脚本:

      <?php 

    $gigatools = simplexml_load_file('http://gigs.gigatools.com/user/MikeRavelli.xml');
    echo "<table id='gigs_parse'>\n";

    for($i = 0; $i < 12; $i++) {
      $event = $gigatools->event[$i];
      $day=$event->day;
      $month=$event->month;
      $name=$event->name;
      $venue=$event->venue;
      $city=$event->city;
      $country=$event->country;

      if($month == 1){
        $maand = 'JAN';
      } else if($month == 2){
        $maand = 'FEB';
      } else if($month == 3){
        $maand = 'MAR';
      } else if($month == 4){
        $maand = 'APR';
      } else if($month == 5){
        $maand = 'MAY';
      } else if($month == 6){
        $maand = 'JUN';
      } else if($month == 7){
        $maand = 'JUL';
      } else if($month == 8){
        $maand = 'AUG';
      } else if($month == 9){
        $maand = 'SEP';
      } else if($month == 10){
        $maand = 'OCT';
      } else if($month == 11){
        $maand = 'NOV';
      } else if($month == 12){
        $maand = 'DEC';
      }

      echo "<tr class='row'><td class='date'><span>",$day,"</span><br/>",$maand,"</td>\n";
      echo "<td class='party'><a href='",$url,"' target='_blank'>",$name,"</td>\n";
      echo "<td class='location'>",$venue,", ",$city,", ",$country,"</td>\n";
    }
    echo "</table>";
    ?>

我希望xml Feed显示在多个标签中,这样就可以显示更多的演出。例如,如果Feed中有15个演出,我希望前12个在第一个标签上,另一个第二个选项卡上的3。 我想根据需要为Feed中的演出数量显示尽可能多的标签。因此,标签的数量必须根据Feed中的演出数量自动更改。所以我不会得到任何空白的标签。

我现在搜索了半天,我在互联网上找不到任何好的解决方案。 我不擅长编程,所以我真的需要一个我可以调整的教程或脚本。

有人能指出我正确的方向,例如教程或帮我写一个脚本吗?

提前致谢! 并且b.t.w。抱歉我的英语不好;)

2 个答案:

答案 0 :(得分:1)

您可以使用JQuery UI Tabs

您可以找到一个非常简单的示例here。更改脚本以生成类似

的表格应该很容易
<div id="tabs">
<ul>
    <li><a href="#tabs-1">First</a></li>
    <li><a href="#tabs-2">Second</a></li>
    <li><a href="#tabs-3">Third</a></li>
</ul>
<div id="tabs-1">
    <p>First tab contents</p>
</div>
<div id="tabs-2">
    <p>Second tab contents</p>
</div>
<div id="tabs-3">
    <p>Third tab contents</p>
</div>
</div>

之后,您必须在文档的<head>中添加JQuery UI所需的所有js和css:

<link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
<script src="../../jquery-1.8.0.js"></script>
<script src="../../ui/jquery.ui.core.js"></script>
<script src="../../ui/jquery.ui.widget.js"></script>
<script src="../../ui/jquery.ui.tabs.js"></script>
<link rel="stylesheet" href="../demos.css">

最后,只需调用实际创建选项卡的函数

<script>
$(function() {
    $( "#tabs" ).tabs();
});
</script>

答案 1 :(得分:0)

谢谢你!正在为Gigatools搜索PHP XML Parser ......

我也是PHP新手,但不会像这样更好:

<?php 

    $feed = 'http://gigs.gigatools.com/user/MikeRavelli2.xml';
    $gigatools = simplexml_load_file($feed)or
          die ("Fehler beim Laden des Feeds: ".$feed."\n");;
    $countgigs = count($gigatools->event);
    echo "<table id='gigs_parse'>\n";
    if ($countgigs > 12) {
        $gigs = 12;
    } else {
        $gigs = $countgigs;
    }

    for($i = 0; $i < $gigs; $i++) {
      $event = $gigatools->event[$i];
      $day=$event->day;
      $month=$event->month;
      $name=$event->name;
      $venue=$event->venue;
      $city=$event->city;
      $country=$event->country;

      if($month == 1){
        $maand = 'JAN';
      } else if($month == 2){
        $maand = 'FEB';
      } else if($month == 3){
        $maand = 'MAR';
      } else if($month == 4){
        $maand = 'APR';
      } else if($month == 5){
        $maand = 'MAY';
      } else if($month == 6){
        $maand = 'JUN';
      } else if($month == 7){
        $maand = 'JUL';
      } else if($month == 8){
        $maand = 'AUG';
      } else if($month == 9){
        $maand = 'SEP';
      } else if($month == 10){
        $maand = 'OCT';
      } else if($month == 11){
        $maand = 'NOV';
      } else if($month == 12){
        $maand = 'DEC';
      }

      echo "<tr class='row'><td class='date'><span>",$day,"</span><br/>",$maand,"</td>\n";
      echo "<td class='party'><a href='",$url,"' target='_blank'>",$name,"</td>\n";
      echo "<td class='location'>",$venue,", ",$city,", ",$country,"</td>\n";
    }
    echo "</table>";
    ?>