FlexとPHPでmysqlからデータの読み出し
前からやってみたかったFlexとPHPの連携をやってみました。
連携の流れ
FlexからPHPへリクエストを出す。
リクエストに応じてPHP側でデータベースへ接続してデータを取り出す。
Flexへ返すデータをxmlにする。
Flexでxmlを読み込んで表示。
Flex側
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()"> urlにPHPファイルを指定。 <mx:HTTPService id="service" url="./Flex_PHP2.php" resultFormat="e4x" useProxy="false" method="GET"/> <mx:DataGrid id="listGrid" x="10" y="63" width="741" height="553" dataProvider="{service.lastResult..item}"> <mx:columns> <mx:DataGridColumn headerText="ID" dataField="id" /> <mx:DataGridColumn headerText="タイトル" dataField="title"/> <mx:DataGridColumn headerText="作者" dataField="author"/> <mx:DataGridColumn headerText="値段" dataField="price"/> </mx:columns> </mx:DataGrid> <mx:Script> <![CDATA[ private function init():void{ //パラメータで文字列を渡している。全件検索 //こんな感じに書くとPHP側で$_GET["type"]で"SELECT_ALL"が取得できる。 service.send({type:"SELECT_ALL"}); } private function select():void{ //上とは違う書き方が違うだけ //$_GET["type"]で"SELECT"、$_GET["id"]でsearch_id.valueが取得できる service.request.type = "SELECT"; service.request.id = search_id.value; service.send(); } ]]> </mx:Script> <mx:TextArea x="10" y="12" width="58" text="ID検索
" height="25" editable="false" borderThickness="0" backgroundAlpha="0"/> <mx:Button x="123" y="10" label="全表示" height="45" click="init()"/> <mx:NumericStepper x="57" y="10" minimum="1" value="1" id="search_id" stepSize="1" change="select()"/> </mx:Application>
PHP側
ここでは主にデータベース接続とXMLの生成
<?php require_once './Serializer.php'; $db_host="サーバ名"; $db_user="ユーザー名"; $db_passwd = "パスワード"; $db = mysql_connect($db_host,$db_user,$db_passwd); $db_name = "データベース名"; mysql_select_db($db_name,$db); $options = array( "indent" => " ", "linebreak" => "\n", "typeHints" => false, "addDecl" => true, "encoding" => "UTF-8", "rootName" => "result", "defaultTagName" => "item", ); $serializer = new XML_Serializer($options); if($_GET["type"] == "SELECT_ALL"){ $sql = "SELECT * FROM books;"; } else if($_GET["type"] == "SELECT"){ $sql = "SELECT * FROM books WHERE id =".$_GET["id"].";"; } $result = mysql_query( $sql ); $valArr = array(); while( $val = mysql_fetch_assoc( $result ) ){ $valArr[] = $val; } $status = $serializer->serialize($valArr); if( $status === true ) { $xml = $serializer->getSerializedData(); header ("Content-Type: text/xml; charset=UTF-8"); echo $xml; exit; } exit; ?>
参考記事
PHPでXMLを簡単に出力する方法 - PHP,MySQL,Flex,JSな日々+イラストとか
PHP+FlexでCRUD【その1】 | フリップフラップ