Symfoware Server WebDBtoolsユーザーズガイド - FUJITSU -
|
目次
索引

|
3.6.3 データ検索:複数検索

■処理の内容
チェックボックスで選択された複数の項目を、データベースから検索し、その結果を表示します。
■サンプルプログラム
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つの文字列に変換するなど、データベースが検索できる形式に変換することが必要です。
All Rights Reserved, Copyright(C) 富士通株式会社 2007