flex DBから検索したい

2011/07/12

DBのデータから任意のデータを検索したいから…検索できるようにする。

「_Super_○○○Service.as」と「○○○Services.php」を追記・修正。

めも

内容としては、入力した文字列を含むデータの抽出。
クエリのwhere句としては「[カラム名] like '[入力した文字列]'」。

検索フォームの作成

「s:Form」の中に「s:TextInput」と「s:Button」を追加

下記のような感じ。

  1. <s:Form>
  2. <s:TextInput/>
  3. <s:Button label="検索"/>
  4. </s:Form>

検索フォームの「s:TextInput」の設定

「id」を追加する。
※「qSearch」としてみた。

下記のような感じ。

<s:TextInput id="qSearch"/>

検索フォームの「s:Button」の設定

「id」「click」を追加する。
※「id」は「qExcute」、「click」のときの実行する関数を「button_clickHandlerSearch(event)」としてみた。

下記のような感じ。

<s:Button id="qExcute" label="検索" click="button_clickHandlerSearch(event)"/>

検索フォームの「s:Form」の設定

「defaultButton」を追加する。
※「s:Button」の「id」である「qExcute」を設定。
※用途は不明

下記のような感じ。

<s:Form defaultButton="{qExcute}">

「s:Button」を押したときの処理

入力した文字列を引数として「_Super_○○○Service.as」に渡す。
下記のような感じ。

  1. protected function button_clickHandlerSearch(event:MouseEvent):void
  2. {
  3.   var search:String = qSearch.text;
  4.   getAllTestResult.token = testService.getSearchTest(search);
  5. }

※「getSearchTest()」っていう名称の関数に送る。

「_Super_○○○Service.as」に追加

プロジェクトの中に「src:services:○○○service:_Super_○○○Service.as」ってのがあるのでそれを開く。
適当な箇所に下記のような感じで追加した。

  1. public function getSearchTest(word:Object) : mx.rpc.AsyncToken
  2. {
  3.   var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("getSearchTest");
  4.   var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(word) ;
  5.   return _internal_token;
  6. }

※PHPのクラスにある「getSearchTest」っていうヤツに送る。

「○○○Service.php」に追加

私の場合は…プロジェクトの下に「services」というものを作ってそこに保存する設定をしていた。

適当なものをコピペしてクエリのトコだけちょこっと修正すればOK

私の場合は下記のような感じ。

  1. public function getSearchTest($word) {
  2.  
  3.   $qWhere = "where 1=1 and ( name like '%{$word}%' or comment like '%{$word}%' )";
  4.  
  5.   $stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename {$qWhere}");
  6.   $this->throwExceptionOnError();
  7.   
  8.   mysqli_stmt_execute($stmt);
  9.   $this->throwExceptionOnError();
  10.   
  11.   $rows = array();
  12.   
  13.   mysqli_stmt_bind_result($stmt, $row->id, $row->name, $row->comment);
  14.   
  15.   while (mysqli_stmt_fetch($stmt)) {
  16.     $rows[] = $row;
  17.     $row = new stdClass();
  18.     mysqli_stmt_bind_result($stmt, $row->id, $row->name, $row->comment);
  19.   }
  20.   
  21.   mysqli_stmt_free_result($stmt);
  22.   mysqli_close($this->connection);
  23.  
  24.   return $rows;
  25. }

これだとエラーが出る場合もあるので「flex DBから検索したい(改)」を参考にしたほうが良い。

新着(ニュース関連以外)

2017-08-03
formのinputでmaxlengthを使うとFirefoxでバグってた。他のブラウザでも気づかずにバグってたかもしれない。
2017-07-19
折れ線グラフをもう少しゆるやかに・・・というか何というか・・・調べていくと「移動平均」っていう言葉にたどり着いた
2017-07-10
FuelPHPの1.8をダウンロードして使っていたらセッションが使えないということに気付いた。
2017-06-27
MACにWin10をインストールしてみた:再挑戦。
2017-06-25
「簡単」っていうヤツらが多いけど・・・難しいぞ。