Flex는 MySQL과 직접적으로 연동을 할수가 없습니다.
때문에 Flex->PHP->MySQL->XML->Flex 라는 다소 복잡한 과정을 거쳐야합니다.
(PHP 대신에 ASP 혹은 JSP 등을 사용할수도 있습니다.)
(물론 잘 찾아보면 DB를 연동할수 있는 컴포넌트가 있긴합니다만,
Flex 자체에서 정식으로 지원하지는 않습니다. 자세한 정보를 원하시면
http://code.google.com/p/assql/ 를 참고하시기 바랍니다.)
개략적인 프로그램의 흐름은 다음과 같습니다.
inputID라는 textinput에서 ID를 받아서 버튼을 눌러 PHP파일을 호출합니다.
PHP파일에서는 mxml에서 보낸 id를 받아서 해당 id의 파일 목록을 얻어와서
xml형식으로 만들어서 다시 flex로 보냅니다.
자 다음은 소스를 보도록 합시다.
MXML
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.rpc.http.HTTPService; import mx.rpc.events.ResultEvent; private var SQLData:ArrayCollection = new ArrayCollection();
private function sendAndReceive(event:ResultEvent):void { SQLData = event.result.file; //DB에서 받아온 내용을 배열에 바인딩 } ]]> </mx:Script> <mx:HTTPService id="request" method="POST" url="http://xxx.xxx.xxx.xxx/~next2008/index.php" useProxy="false" result="sendAndReceive(event)">
<!--url은 php파일의 경로이고, result는 php파일 호출후 실행할 함수명입니다.--> <mx:request xmlns="*"> <userID>{inputID.text}</userID>
<!--실질적으로 php에 데이터 보내는곳입니다. <tag>내용</tag>형식으로 추가하면 됩니다.--> </mx:request> </mx:HTTPService> <mx:Panel title="example" width="100%" height="255"> <mx:TextInput id="inputID"/> <mx:Button click="request.send();" /> </mx:Panel> </mx:Application> |
PHP
<? $inputID = $_POST['userID'];
//Flex에서 보낸 데이터를 받습니다. 변수를 추가로 더 받을때는
//"$변수 = $_POST['tag'];" 형식으로 합니다. $link = @mysql_connect ("MySQL주소", "ID", "패스워드");
//MySQL이 있는 주소를 적으면 됩니다. php파일이 있는곳에 DB가 있다면
//localhost 라고 하면 됩니다. ID와 패스워드는 mysql의 아이디와 패스워드입니다. $db = mysql_select_db("web", $link);
//db선택 $query = "select * from userinfo where id='" .$inputID. "'"; $result = mysql_query($query, $link) or die ("쿼리잘못");
//쿼리 $data = mysql_fetch_array($result) or die("데이터 못넘겨받음(ID이상)"); $ID = $data[0]; $db = mysql_select_db($ID, $link);
//db교체
$query = "select * from file"; $result = mysql_query($query, $link) or die("쿼리이상");
$dataNum = mysql_num_rows($result); $fileList = array(); for($i = 0; $i < $dataNum; $i++) { $data = mysql_fetch_array($result) or die("데이터 잘못넘겨받음"); for($j = 0; $j < 4; $j++) $fileList[$i][$j] = $data[$j]; }
//데이터를 배열로 받아옵니다.
for($i = 0; $i < $dataNum; $i++) { $return .= "<file><name>" . $fileList[$i][0] . "</name><upperfolder>" . $fileList[$i][1] . "</upperfolder><size>" . $fileList[$i][2] . "</size><date>" . $fileList[$i][3] . "</date></file>";
}
print($return);
//xml형식으로 만들어서 뿌려줍니다.
mysql_close($link);
?>
|
MySQL
db생성-web
create database web; web/userinfo테이블생성 create table userinfo(id char(10) not null, name char(10) not null, password char(16) not null, nickname char(20) not null, primary key(id));
web/userinfo테이블에 데이터 삽입 insert into userinfo values('tkeo', '최인명', 'asdf', 'Rese');
db생성-tkeo
create database tkeo;
tkeo/file테이블 생성 create table file(fileName char(20) not null, upperFolder char(20) not null, size integer not null, updateDate integer not null, primary key(fileName));
tkeo/file테이블에 데이터 삽입 insert into file values('fghj.exe', 'aaaa', 1301, 20070222); |
댓글 없음:
댓글 쓰기