如何通过条件嵌套使用PHP和MYSQL创建XML

如何通过条件嵌套使用PHP和MYSQL创建XML,php,mysql,xml,Php,Mysql,Xml,我试图通过使用数据库通过MYSQL和PHP创建XML文件来制作电视指南。到目前为止,我已经取得了很好的成功,并且每天都能输出不同的频道 问题是当我尝试引入各种节目时。在数据库中,每个节目都分配了一天,并在频道上播放。然而,生成的XML每天都在每个频道上播放每个节目 以下是我到目前为止的情况: $xml = new DOMDocument("1.0", "UTF-8"); $xml->formatOutput = TRUE; $day_query = "SELECT day_name FR

我试图通过使用数据库通过MYSQL和PHP创建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等于Monday的所有节目嵌套在“Monday”XML标记中。谢谢。

好的,要快速回答您的问题,只需更改即可:

$show\u query=“按开始时间ASC;从节目顺序中选择节目ID、节目名称、开始时间、持续时间、描述、日期名称、频道名称”

进入

$show_query=“从节目中选择节目ID、节目名称、开始时间、持续时间、描述、日期名称、频道名称,其中日期名称=“$dayrow[0]”和频道名称=“$channelNameText”按开始时间ASC;”

然而,还有一些事情需要改变:

  • 您不应该使用
    mysql\uuz
    接口,请使用或
  • 您正在while中执行一个常量查询(
    按频道名称ASC;
    ,从频道顺序中选择频道ID、频道名称)。您可能应该在while之前只创建一次,并缓存其结果