処理の内容
チェックボックスで選択された複数の項目を、データベースから検索し、その結果を表示します。
サンプルプログラム
checkbox.html
・・・ <FORM ACTION="$SYSTEM::FMTR" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="checkbox_fmt.html"> <INPUT TYPE="CHECKBOX" NAME="Category" VALUE="カテゴリ LIKE ’オーディオ’">オーディオ<BR> <INPUT TYPE="CHECKBOX" NAME="Category" VALUE="カテゴリ LIKE ’照明’">照明<BR> <INPUT TYPE="CHECKBOX" NAME="Category" VALUE="カテゴリ LIKE ’調理’">調理<BR> <INPUT TYPE="CHECKBOX" NAME="Category" VALUE="カテゴリ LIKE ’日用生活’">日用生活<BR> <INPUT TYPE="CHECKBOX" NAME="Category" VALUE="カテゴリ LIKE ’コンピュータ’">コンピュータ<BR> <INPUT TYPE="CHECKBOX" NAME="Category" VALUE="カテゴリ LIKE ’空調’">空調<BR> <INPUT TYPE="SUBMIT" VALUE="検索"> </FORM> (1) ・・・
(1) 検索項目の指定
チェックボックスでチェックされた項目を“Category”に設定し、checkbox_fmt.html に引き継ぎます。複数項目がチェックされた場合は、“Category”にリストの形式で格納されます。
checkbox_fmt.html
・・・ <!SETVAR cond ’join(" OR ", QUERY::Category)’> (2) <!DO "SELECT 製品名, カテゴリ, 機能, 型番 FROM WL_SCHEMA.製品表 WHERE $cond" RESULT=rslt> (3) <TABLE BORDER=1> <TR> <TD>製品名</TD> <TD>カテゴリ</TD> <TD>機能</TD> <TD>型番</TD> </TR> <!FOREACH rslt t> <TR> <TD><!HREPLACE ’t{製品名}’></TD> <TD><!HREPLACE ’t{カテゴリ}’></TD> <TD><!HREPLACE ’t{機能}’></TD> <TD><!HREPLACE ’t{型番}’></TD> </TR> <!/FOREACH> (4) </TABLE> ・・・
(2) 検索対象データの検索可能形式への変換
checkbox.html から引き継いだ“Category”がリスト形式の場合、そのままではデータベースの検索に用いることができません。この場合、リスト関数の“join”を使用して1つの文字列に変換し、データベースが検索できる形式に整形します。
サンプルプログラムでは、“Category”の各要素の間に“OR”を挿入し、変換した結果を“cond”に設定します。
(3) データベースの検索
データベースから“cond”に設定された文字列に合致するもの検索し、結果を“rslt”に格納します。
(4) 検索結果の表示
検索した情報の製品名、カテゴリ、機能、型番をすべて表示します。
解説
checkbox.html で検索する項目をチェックして“Category”に格納し、データベースを検索するためにcheckbox_fmt.html へ処理を引き継ぎます。
checkbox_fmt.html では、checkbox.html から引き継いだ“Category”をデータベースで検索できる形に変更します。これを検索対象としてデータベースを検索し、結果を表示します。
ポイント
チェックボックスなどを利用して検索条件を設定するときに、複数の項目が選択された場合、各項目は変数にリストの要素として格納されます。この場合、リスト関数の“join”を利用して1つの文字列に変換するなど、データベースが検索できる形式に変換することが必要です。