flex DBから検索したい
2011/07/12
DBのデータから任意のデータを検索したいから…検索できるようにする。
「_Super_○○○Service.as」と「○○○Services.php」を追記・修正。
めも
内容としては、入力した文字列を含むデータの抽出。
クエリのwhere句としては「[カラム名] like '[入力した文字列]'」。
クエリのwhere句としては「[カラム名] like '[入力した文字列]'」。
検索フォームの作成
「s:Form」の中に「s:TextInput」と「s:Button」を追加
下記のような感じ。
- <s:Form>
- <s:TextInput/>
- <s:Button label="検索"/>
- </s:Form>
検索フォームの「s:TextInput」の設定
「id」を追加する。
※「qSearch」としてみた。
※「qSearch」としてみた。
下記のような感じ。
<s:TextInput id="qSearch"/>
検索フォームの「s:Button」の設定
「id」「click」を追加する。
※「id」は「qExcute」、「click」のときの実行する関数を「button_clickHandlerSearch(event)」としてみた。
※「id」は「qExcute」、「click」のときの実行する関数を「button_clickHandlerSearch(event)」としてみた。
下記のような感じ。
<s:Button id="qExcute" label="検索" click="button_clickHandlerSearch(event)"/>
検索フォームの「s:Form」の設定
「defaultButton」を追加する。
※「s:Button」の「id」である「qExcute」を設定。
※用途は不明
※「s:Button」の「id」である「qExcute」を設定。
※用途は不明
下記のような感じ。
<s:Form defaultButton="{qExcute}">
「s:Button」を押したときの処理
入力した文字列を引数として「_Super_○○○Service.as」に渡す。
下記のような感じ。
下記のような感じ。
- protected function button_clickHandlerSearch(event:MouseEvent):void
- {
- var search:String = qSearch.text;
- getAllTestResult.token = testService.getSearchTest(search);
- }
※「getSearchTest()」っていう名称の関数に送る。
「_Super_○○○Service.as」に追加
プロジェクトの中に「src:services:○○○service:_Super_○○○Service.as」ってのがあるのでそれを開く。
適当な箇所に下記のような感じで追加した。
適当な箇所に下記のような感じで追加した。
- public function getSearchTest(word:Object) : mx.rpc.AsyncToken
- {
- var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("getSearchTest");
- var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(word) ;
- return _internal_token;
- }
※PHPのクラスにある「getSearchTest」っていうヤツに送る。
「○○○Service.php」に追加
私の場合は…プロジェクトの下に「services」というものを作ってそこに保存する設定をしていた。
適当なものをコピペしてクエリのトコだけちょこっと修正すればOK
私の場合は下記のような感じ。
- public function getSearchTest($word) {
- $qWhere = "where 1=1 and ( name like '%{$word}%' or comment like '%{$word}%' )";
- $stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename {$qWhere}");
- $this->throwExceptionOnError();
- mysqli_stmt_execute($stmt);
- $this->throwExceptionOnError();
- $rows = array();
- mysqli_stmt_bind_result($stmt, $row->id, $row->name, $row->comment);
- while (mysqli_stmt_fetch($stmt)) {
- $rows[] = $row;
- $row = new stdClass();
- mysqli_stmt_bind_result($stmt, $row->id, $row->name, $row->comment);
- }
- mysqli_stmt_free_result($stmt);
- mysqli_close($this->connection);
- return $rows;
- }
これだとエラーが出る場合もあるので「flex DBから検索したい(改)」を参考にしたほうが良い。