Send Array to Flex app.
2010/07/15 Leave a Comment
เคยใช้ทั้งแบบโยนไปเป็น object และแบบ array ใช้งานจริงส่วนใหญ่ผมจะใช้เทคนิคโยนไปเป็น object ทีละแถว แต่ถ้าอยากได้แบบโยนไปเป็น array ก็ทำได้ครับ ทั้งแบบที่ใช้ HTTPService และ RemoteObject
CREATE TABLE `tbl_array` ( `array_auto_id` int(11) NOT NULL auto_increment, `array_val` varchar(255) default NULL, PRIMARY KEY (`array_auto_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
กรณีใช้ HTTPService
httpservice/array2php.php
<?php
class TblArrayDao {
function __construct() {
mysql_connect("localhost", "root", "123456");
mysql_select_db("db_array");
mysql_query("SET NAMES 'utf8'");
}
function __destruct() {
mysql_close();
}
function insertArray($ar){
if( !is_array($ar) ) return FALSE;
$query = " INSERT INTO tbl_array(array_val) ";
$query_vals = "";
foreach( $ar as $key=>$val ){
$query_vals .= ( $query_vals )?", ('".$val."')":"VALUES('".$val."')";
}
$query .= $query_vals;
mysql_query($query);
}
}
//ini_set('default_charset', 'UTF-8');
header('Content-Type:text/html; charset=UTF-8');
//print_r($_GET);
$tbl_array = new TblArrayDao();
$tbl_array->insertArray($_GET);
กรณีใช้ RemoteObject
amfphp/services/array2amfphp/TblArrayDao.php
<?php
/**
* Description of TblArrayDao
*
* @author knopsod of http://thaiflexdev.wordpress.com
*/
class TblArrayDao {
function __construct() {
mysql_connect("localhost", "root", "123456");
mysql_select_db("db_array");
mysql_query("SET NAMES 'utf8'");
}
function __destruct() {
mysql_close();
}
function insertArray($ar){
if( !is_array($ar) ) return FALSE;
$query = " INSERT INTO tbl_array(array_val) ";
$query_vals = "";
foreach( $ar as $key=>$val ){
$query_vals .= ( $query_vals )?", ('".$val."')":"VALUES('".$val."')";
}
$query .= $query_vals;
mysql_query($query);
}
}
Flex project
FxArray.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private var ar:Array = ["fx_one","fx_two","fx_three"];
private function btClickHs():void{
hs.send(ar);
}
private function faultHandler( event:FaultEvent ):void{
Alert.show("Fail");
}
private function hsResultHandler( event:ResultEvent ):void{
Alert.show("HTTPService success");
}
private function btClickRm():void{
rm.getOperation("insertArray").send(ar);
}
private function rmResultHandler( event:ResultEvent ):void{
Alert.show("RemoteObject success");
}
]]>
</mx:Script>
<mx:HTTPService id="hs" url="httpservice/array2php.php"
fault="faultHandler(event)"
result="hsResultHandler(event)"/>
<mx:RemoteObject id="rm"
endpoint="amfphp/gateway.php"
source="array2amfphp.TblArrayDao"
destination="none"
fault="faultHandler(event)"
result="rmResultHandler(event)"/>
<!-- Use RemoteObject with out services-config.xml file -->
<mx:Button click="btClickHs()" label="Send by HTTPService"/>
<mx:Button click="btClickRm()" label="Send by RemoteObject"/>
</mx:Application>
Ref : http://www.thaiflashdev.com/home/index.php?topic=12025.msg77478#msg77478