2013-04-09 88 views
0

我制作一个从数据库中获取数据的外观时间表。但在我的情况下,我直接将数据提取到文件数据* .xmlPHP输出xml数据

或者换句话说,我会进行定期数据收集调度。 但是这导致我显示的数据不是动态的。因为它只能读取文件*。 xml它。我想创建的PHP和XML数据的功能outpunya是这样的:

<?php 
header("Content-type: text/xml"); 
$dbhost = "localhost"; 
$dbuser = "user"; 
$dbpass = "pass"; 
$dbname = "my_epg"; 
mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($dbname); 

include "Encoding.php"; 

date_default_timezone_set("Asia/Jakarta"); 
$DataTanggal = strip_tags(date("l, jS, F Y")); 

sql = "select distinct(channel_name) FROM epg"; 
$q = mysql_query($sql) or die(mysql_error()); 
$xml = "<timetable start='00:00' end='24:00' title='".$DataTanggal."'>"; 

while($r = mysql_fetch_array($q)){ 
     $CN = htmlspecialchars(strip_tags($r['channel_name'])); 
      $xml .= "<location name='".$CN."'>"; 


     $sql2 = "select * FROM epg where channel_name='".$CN."'"; 
     $q2 = mysql_query($sql2) or die(mysql_error()); 

while($r2 = mysql_fetch_array($q2)){ 
    $Mulai  = htmlspecialchars(strip_tags(date('H:i', strtotime($r2['waktu_mulai'])))); 
    $Selesai = htmlspecialchars(strip_tags(date('H:i', strtotime($r2['waktu_akhir'])))); 
    $Title  = htmlspecialchars(strip_tags($r2['judul'])); 
    $Desk  = htmlspecialchars(strip_tags($r2['sinopsis'])); 

     $Encoding1 = Encoding::fixUTF8($TitleValid); 
     $Encoding2 = Encoding::fixUTF8($DeskValid); 

    $xml .= "<event start='".$MulaiValid."' end='".$SelesaiValid."'>"; 
    $xml .= "<title>".$Encoding1."</title>"; 
    $xml .= "<description>".$Encoding2."</description>"; 
    $xml .= "</event>"; 
} 

$xml .= "</location>"; 
} 



$xml .= "</timetable>"; 
echo $xml; 
?> 

这个成功过程php文件和输出的结果一样访问的* .xml。现在我使用timetable.class.php来处理这些数据的问题。

public function createTimetable($url) { 

    //Load xml file 
    $xml = @simplexml_load_file($url, NULL, LIBXML_NOCDATA); 

    if(!$xml) { 
     echo 'Error: there is an error in your XML file: <a href="'.$url.'">'.$url.'</a>'; 
     return; 
    } 

    if (strpos($url, 'http://') === 0 || strpos($url, 'https://') === 0 || strpos($url, 'ftp://') === 0) { 
     echo 'Error: the path to your xml file may not start with "http://"'; 
     return; 
    } 

    //Set the settings 
    $this->setSettings($xml, $url); 

    $this->writeHTML($xml); 

    echo $this->mbencoding($this->output); 
    return; 

} 

但此功能只能用于从现有文件(* .xml)中读取数据。不是动态的php过程。

我的问题:我如何在这个class.php上创建一个进程来获取或发布数据以使其成为动态的,这样我就可以访问我已经创建了类型为xml的进程的链接地址了?

+0

http://php.net/wrappers.data.php - 让该函数允许接受http(s)/ ftp旁边的'data://'URI。 - 还有['simplexml_load_string()'](http://php.net/simplexml_load_string)。 – hakre 2013-04-09 12:12:42

回答

0

在你DINAMIC PHP文件的末尾,你可以将文件保存为这个生成的XML:

$file = fopen("generated.xml","w"); 

fwrite($file, $xml); 

fclose($file); 

然后,在功能createTimetable加载保存的XML文件。