Salah satu metode untuk menghubungkan flex dengan database seperti mysql adalah dengan remoting object, diantaranya adalah dengan AMFPHP. Lebih lengkapnya tentang AMFPHP silahkan kunjungi http://www.amfphp.org.
Step by step nya sebagai berikut :
Persiapan
- Download AMFPHP di : http://sourceforge.net/project/showfiles.php?group_id=72483#files
- Extract hasil download dan taruh di folder htdocs anda
- Pastikan anda bisa mengakses http://127.0.0.1/amfphp dari browser
- Buat tabel pada mysql melalui phpmyadmin, dalam contoh kali ini, kita namakan saja tb_karyawan sbb :
CREATE TABLE `test`.`tb_karyawan` (
`nik` VARCHAR(45) NOT NULL,
`nama` VARCHAR(45) NOT NULL,
`jabatan` VARCHAR(255) NOT NULL,
`dept` VARCHAR(255) NOT NULL,
PRIMARY KEY (`nik`)
)
isi table tersebut dengan beberapa record data
Pembuatan Service AMFPHP
Langkah selanjutnya adalah membuat service pada amfphp. service ini berupa file php dan diletakkan di folder htdocs\amfphp\services. sebagai contoh kita namakan dengan karyawan.php , isinya sebagai berikut :
<?php
define(“DB_USER”,”root”);
define(“DB_PASSWORD”,”passwordanda”);
define(“DB_NAME”,”namadatabaseanda”);
class karyawan{
function karyawan(){
}
function mygetRecordset(){
mysql_connect(“localhost”,DB_USER,DB_PASSWORD);
mysql_select_db(DB_NAME);
$query=”select * from tb_karyawan”;
$result = mysql_query($query);
while ($row=mysql_fetch_object($result)) {
$arr_hasil[]=$row;
}
return ($arr_hasil);
}
}
?>
Pembuatan Interface Flex
Untuk contoh ini , kita memakai datagrid untuk menampilkan data. Kode lengkapnya sebagai berikut :
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” creationComplete=”getData();”>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.messaging.ChannelSet;
import mx.messaging.channels.AMFChannel;
import mx.collections.ArrayCollection;
[Bindable] private var ac_data:ArrayCollection;
private function getData():void{
var cs:ChannelSet = new ChannelSet();
var channel:AMFChannel = new AMFChannel(“amfphp”, “http://127.0.0.1/amfphp/gateway.php”);
cs.addChannel(channel);
ro.channelSet=cs;
ro.mygetRecordset();
}
private function ondata(re:ResultEvent):void
{
var s:Array = re.result as Array;
ac_data= new ArrayCollection(s);
}
private function onerror(fe:FaultEvent):void
{
mx.controls.Alert.show(fe.message.toString(), “Remote Error”);
}
]]>
</mx:Script>
<mx:RemoteObject id=”ro” result=”ondata(event)” fault=”onerror(event)”
showBusyCursor=”true” destination=”AMFPHP2″ source=”karyawan”>
<mx:method name=”mygetRecordset” />
</mx:RemoteObject>
<mx:DataGrid width=”500″ height=”191″ horizontalCenter=”-17″
verticalCenter=”-66″ dataProvider=”{ac_data}”>
<mx:columns>
<mx:DataGridColumn headerText=”NIK” dataField=”nik”/>
<mx:DataGridColumn headerText=”Nama Karyawan” dataField=”nama”/>
<mx:DataGridColumn headerText=”Jabatan” dataField=”jabatan”/>
<mx:DataGridColumn headerText=”Departemen” dataField=”dept”/>
</mx:columns>
</mx:DataGrid>
</mx:Application>