0

xmlフィードを介してスポーツイベントに関するデータを取得します。simplexmlを使用して取得します。これまでのところ、iveはforeachすべてのイベントをループし、<a>タグでラップされたイベント名のリストとしてエコーアウトし、ページevent.php?= idを指すループを取得しました(idはidと呼ばれるevents属性によって決定されます)。

このimを使用して行うには

<?php
    $xml = simplexml_load_file("openbet_cdn.xml");
    foreach($xml->response->williamhill->class->type->market as $market) {
        $market_attributes = $market->attributes();
        printf("<a href=\"event.php?id=%s\">%s</a>\n", 
                    $market_attributes->id, 
                    $market_attributes->name);
    }
?>

私が使用しているフィードはhttp://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=5&marketSort=HH&filterBIR=Nです。

問題が発生しているのは、私のページevent.phpで、xmlフィードの最初のイベントが表示され続けています。を使用してこのimを行うには:

<?php 
  foreach ($xml->response->williamhill->class->type->market->participant as $participant) {   
  $participant_attributes = $participant->attributes();  

    echo "<tr>";
      // EVENT NAME
      echo "<td>";
        echo "<a href=".$market_attributes['url'].">";
        echo $participant_attributes['name'];//participants name
        echo "</a>";
      echo"</td>";

      //ODDS
      echo "<td>";
        echo $participant_attributes['odds'];
      echo "</td>"; 
    echo "</tr>";
  } 
?>

イベントページのURLにあるIDを参照していないためだとわかります。しかし、私はこれをどのように行うのかよくわかりません。どうすればこれに取り組むことができるのでしょうか。

4

1 に答える 1

1

ifクエリ文字列内のイベント ID と一致するイベント ID のみを対象とするように、ループ内に を追加するだけです。各市場をループして一致する を見つけてから、各参加者をループするため、ネストされたループも必要ですid

  foreach ($xml->response->williamhill->class->type->market as $market) {   

    if($market->attributes()->id == $_GET['id']) {

        foreach($market->participant as $participant) {
            $participant_attributes = $participant->attributes();  

            echo "<tr>";
              // EVENT NAME
              echo "<td>";
                echo "<a href=".$market->attributes()->url.">";
                echo $participant_attributes['name'];//participants name
                echo "</a>";
              echo"</td>";

              //ODDS
              echo "<td>";
                echo $participant_attributes['odds'];
              echo "</td>"; 
            echo "</tr>";
        }

        break; // <-- we've found the target and echo'ed it so no need to keep looping
    }
  } 
于 2013-02-01T16:53:31.650 に答える