2011-11-30 66 views
1

所以我的問題是,我試圖創建一個應用程序,它將主要從MySQL數據庫中檢索數據,並將其分成具有特定數據創建日期的表。 現在,我有一個PHP腳本,它允許我從數據庫中提取數據並將其放入XML文件中。問題是,我沒有它的日期排序,這是非常重要的應用程序,但我沒有任何想法,我怎麼會做一個腳本,這將從MySQL數據庫中提取數據和把數據轉換成這種格式:如何使用Flex中的屬性創建和訪問XML

<allitems> 
    <items date="29-11-2011"> 
     <item> 
      <title>Something</title> 
      <title2>Something else</title2> 
     </item> 
     <item> 
      <title>Something2</title> 
      <title2>Something else2</title2> 
     </item> 
     <item> 
      <title>Something3</title> 
      <title2>Something else3</title2> 
     </item> 
    </items> 
</allitems> 

鑑於將有更多的組,每組有不同的日期屬性,每個從不同的表中創建,但所有這些數據在一個XML文件中。

順便說一句,這是我的PHP腳本什麼我現在使用:

$query = mysql_query("SELECT * FROM test_codes"); 
$xml_output = "<?xml version=\"1.0\"?>\n"; 
$xml_output .= "<items>"; 

$fp = fopen($filename,"w"); 

for($x = 0 ; $x < mysql_num_rows($query) ; $x++){ 
    $row = mysql_fetch_assoc($query); 

    $xml_output .= "\t<item>\n"; 
    $xml_output .= "\t\t<title>" . $row['title'] . "</title>\n"; 
    $xml_output .= "\t\t<code>" . $row['code'] . "</code>\n"; 
    $xml_output .= "\t\t<quantity>" . $row['quantity'] . "</quantity>\n"; 
    $xml_output .= "\t\t<price>" . intval($row['price'])*intval($row['quantity']) . "</price>\n"; 
    $xml_output .= "\t</item>\n"; 
} 

$xml_output .= "</items>"; 

fwrite($fp,$xml_output); 
fclose($fp); 

而且這是圖片的我是多麼的意思是數據使用在我的Flex應用程序,(在列表中): http://img855.imageshack.us/img855/9291/sofxml.png

+0

真的不明白了你的問題。你有一個MySQL數據庫和一個PHP服務器。無論如何,你將使用php從數據庫中提取數據。你爲什麼要發送這個到Flex,然後創建一個XML?你可以在php中創建一個xml文件併發送給flex應用程序。爲此,我會很快回答你的問題 –

+0

我想要服務器創建一個XML文件,然後將其發送到Flex應用程序,事情是我真的不知道,如何創建XML,如果我有超過1 節點。我基本上需要知道,如何輸出xml,所以我有更多的節點和更多的節點,然後如何讀取flex應用程序中的屬性() 。就這樣。 – Fasand

+0

查看我的回答 –

回答

1
// query ordered by date 
$query = mysql_query("SELECT * FROM test_codes ORDER BY 'date' DESC"); 
$orderedResult = array(); 

// group the items by date 
$queryResult = mysql_fetch_asoc($query); 
foreach($queryResult as $row) { 
    $orderedResult[$row['date']][] = $row; 
} 

// render output by date 
$xml_output = "<?xml version=\"1.0\"?>\n"; 
$xml_output .= "<allitems>"; 

$fp = fopen($filename,"w"); 

foreach($orderedResult as $key => $dateItems) { 
    $xml_output .= '<items date="' . $key . '">'; 
    foreach($dateItems as $row) { 
    $xml_output .= '<item>'; 
     $xml_output .= '<title>' . $row['title'] . '</title>'; 
     $xml_output .= '<code>' . $row['code'] . '</code>'; 
     $xml_output .= '<quantity>' . $row['quantity'] . '</quantity>'; 
    $xml_output .= '</item>' 
    } 
    $xml_output .= '</items>'; 
} 

$xml_output .= "</allitems>"; 

fwrite($fp,$xml_output); 
fclose($fp); 
+0

謝謝,那就是我需要的!現在,我只需要找出如何在flex中使用'date'屬性。 – Fasand

1

假設你有一個PHP腳本,從MySQL拉數據並響應與XML在http://myserver.com/myphp.php?arg1=val1&arg2=val2

(就像你已經在你的問題中給出),您將使用的HTTPService來獲取

private var service:HTTPService; 

//Run this on application initialize 
private function init() { 
    service=new HTTPService(); 
    service.addEventListener(ResultEvent.RESULT, sResult); 
    service.resultFormat="xml"; 
    service.url="http://myserver.com/myphp.php?arg1=val1&arg2=val2"; 
} 

private function sResult(e:ResultEvent):void { 
    var o:Object = xmlStringToObject((e.result as XMLNode).toString()); 
    //Now you have your xml as an object 
    trace(o.allitems.items.getItemAt(0).date); //gives 29-11-2011 
    trace(o.allitems.items.getItemAt(0).item.getItemAt(0)); //{title: Something, title2: Something else} 
    //You get the pattern, if not, debug and watch o 
} 

public function xmlStringToObject(xmlStr:String):Object{ 
    var xmlDoc:XMLDocument = new XMLDocument(xmlStr); 
    xmlDoc.ignoreWhite=true; 
    var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true); 
    var resultObj:Object = decoder.decodeXML(xmlDoc); 
    return resultObj; 
} 
相關問題