はじめに
私の意見では、jqGridは現時点で最も成功した便利なjQueryプラグインであり、AJAXクエリとPHPを介してデータベーステーブルを操作します(ASP.NETのバージョンもあります)。
このプラグインを使用して複雑なテーブル検索を実行する方法の問題にのみ注意を集中しながら、この記事ではすべての詳細を省略します。
最初に、知り合いになることをお勧めします。
where句なしでデータを取得する方法については、この記事では説明しません。 「Introduction to jqGrid」という記事を読んで、結果を並べ替えてページに分割するだけでなく、テーブルの複数のフィールドで一度に複雑な検索を行うことを想定しています。
上記のリンクにある「Searching(4.0)new」->「Search query in search」という名前の下にある例に特に注意してください。
そして、HTMLドキュメントを作成しました:
<table id="newapi"></table> <div id="pnewapi"></div>
接続されたJavaScriptコード:
jQuery("#grps1").jqGrid({
必要なスタイルとスクリプトを接続しました(
ここからダウンロードでき
ます )。
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/redmond/jquery-ui.css" rel="stylesheet" type="text/css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> <link rel="stylesheet" type="text/css" href="css/ui.jqgrid.css"/> <script type="text/javascript" src="src/grid.loader.js"></script>
ライブラリを1つのファイルまたは個別の部分で接続することはできますが、プラグインの公式サイトにあるソース「grid.loader.js」を使用することに注意してください。 私はそれを少し変更し、修正されたコードスニペットを提供します:
... var pathtojsfiles = "src/";
このファイルを使用すると、このモジュールのコンポーネントを管理したり、言語を選択したりするのに便利です。
高度な検索
高度な検索フォーム:

今最も甘いもの。 jqGridは検索時に何を伝えますか?
POSTまたはGETパラメーター(jqGrid設定に依存):
- $ _REQUEST ['_ search ']-検索語を含むクエリが真の値を受け入れる場合、ブール値。
- $ _REQUEST [' filters ']-jsonビュー内の条件を持つオブジェクト。
- $ _REQUEST [' searchField ']-検索するフィールドの名前(条件が単純な場合);
- $ _REQUEST [' searchOper ']-検索用のフィールドを比較する操作(条件が単純な場合)。
- $ _REQUEST [' searchString ']-検索するフィールドの値(条件が単純な場合);
ここで、このデータがわかったら、「where」条件行を生成して必要なプロシージャに渡す必要があります。これは、以前はソートされた列の名前、ソート方向、ページ番号、およびページごとのレコード数のみを受け入れました(
ページネーションのため)。
データベース内のクエリの前に挿入する必要があるコードは次のとおりです(この例ではPOSTリクエストを使用しています)。
if($_search){ if (isset($_POST['filters'])) $filters = $_POST['filters'];
これがこの記事の「核心」であり、データベース内の検索条件を生成する機能です。
generateSearchString()関数:
function generateSearchString($filters, $searchField, $searchOper, $searchString){ $where = ''; if($filters){ $filters = json_decode($filters); $where .= self::generateSearchStringFromObj($filters); } return $where; }
データベースから取得するための条件
を生成
する再帰関数
generateSearchStringFromObj() :
function generateSearchStringFromObj($filters){ $where = '';
PS
インライン検索フォーム:

注意:この式はインライン検索では機能しません。 インライン検索では、jqGridは列名とその値をクエリパラメーターに渡します。
echo $_POST['id'];
したがって、「id」によるインライン検索を実装するには、次のコードを記述するだけで十分です。
$where = "`id` = " . (int)$_POST['id'];
複数のフィールドを検索するには、「AND」で接続された追加の文字列がそれぞれ条件に追加されます。 当然、平等の代わりに、データベースに許容される任意の条件を使用できます。
jqGridからのAJAX要求ハンドラー
のソースファイル。 (コメントを注意深く読んでください。スクリプトは、データベースへの接続を設定し、モジュールへのアピールではなくデータベースへのクエリを入力した場合にのみ機能します)。