2014-12-02 107 views
0

我試圖通過使用數據庫通過MYSQL和PHP創建XML文件來製作電視指南。到目前爲止我已經取得了很好的成功,並且已經設法輸出每天的各種頻道。如何使用PHP和帶條件嵌套的MYSQL創建XML

問題是當我嘗試帶入各種程序時。在數據庫中,每個程序都被分配一天並顯示頻道。然而,正在生成的XML將每個節目放在每個頻道的每一天。

這是我到目前爲止有:

$xml = new DOMDocument("1.0", "UTF-8"); 
$xml->formatOutput = TRUE; 

$day_query = "SELECT day_name FROM day;"; 

$dq_result = mysql_query($day_query) or die(mysql_error()); 

$tvguide = $xml->createElement("guide"); 
$tvguide = $xml->appendChild($tvguide); 

    if($dq_result) 
    while($dayrow = mysql_fetch_row($dq_result)){ 
     $day = $xml->createElement("day"); 
     $day->setAttribute("name", $dayrow[0]); 
     $day = $tvguide->appendChild($day); 

     $channel_query = "SELECT channel_ID, channel_Name FROM channel ORDER BY channel_Name ASC;"; 

     $cq_result = mysql_query($channel_query) or die(mysql_error()); 

     if($cq_result) 
      while($channelrow = mysql_fetch_row($cq_result)){ 

      $channel = $xml->createElement("channel"); 
      $channel->setAttribute("id", $channelrow[0]); 
      $channel = $day->appendChild($channel); 

      $channel_name = $xml->createElement("channel_name"); 
      $channelNameText = $xml->createTextnode($channelrow[1]); 
      $channel_name->appendChild($channelNameText); 
      $channel_name = $channel->appendChild($channel_name); 


      $show_query = "SELECT programme_ID, programme_Name, start_Time, duration, description, day_Name, channel_Name FROM programme ORDER BY start_Time ASC;"; 

      $sq_result = mysql_query($show_query) or die(mysql_error()); 

      if($sq_result) 
       while($showrow = mysql_fetch_row($sq_result)){ 


      $show = $xml->createElement("show"); 
      $show = $channel->appendChild($show); 

      $show_name = $xml->createElement('show_name'); 
      $show_name->setAttribute("id", $showrow[0]); 
      $showNameText = $xml->createTextnode($showrow[1]); 
      $show_name->appendChild($showNameText); 
      $show->appendChild($show_name); 



      } 

     } 
} 

基本上,我想知道我怎麼可以嵌套所有其DAY_NAME等於星期一,例如,「星期一」 XML標籤中顯示。謝謝。

回答

1

OK,迅速回答你的問題,它是爲改變容易:

$ show_query =「SELECT programme_ID,programme_Name,START_TIME,持續時間,描述,DAY_NAME,CHANNEL_NAME從方案ORDER BY START_TIME ASC; 「;

進入

$ show_query =「SELECT programme_ID,programme_Name,START_TIME,持續時間,描述,DAY_NAME,CHANNEL_NAME FROM程序WHERE DAY_NAME = '$ dayrow [0]' AND CHANNEL_NAME = '$ channelNameText' ORDER BY start_Time ASC;「;

然而,有一對夫婦更多的事情來改變:

  1. 你不應該使用mysql_接口,使用mysqliPDO_mysql
  2. 你正在做一個查詢(SELECT channel_ID, channel_Name FROM channel ORDER BY channel_Name ASC;),而這是恆定的。你可能應該只做一次,然後緩存結果。
+0

非常好,非常感謝你的幫助=) – user2950001 2014-12-03 14:27:16