• 検索結果がありません。

データ検索:全件検索

ドキュメント内 WebDBtoolsユーザーズガイド (ページ 43-46)

第3章 データベース連携

3.6 拡張タグの使用例

3.6.2 データ検索:全件検索

処理の内容

データベースを全件検索し、検索した結果を5件ずつ表示します。

データベースを検索するには拡張タグの<!DO>を使用します。この<!DO>タグでSQL文を宣言し、データベースを検索 します。

検索した情報は、拡張タグ<!VAR>で宣言されたグローバル変数を利用して5件ずつ表示されます。

サンプルプログラム

page.html

・・・

<!IF ’defined(rslt)’>

<!UNDEFVAR rslt>

<!/IF>

<!VAR rslt SCOPE=GLOBAL> (1)

<!DO "SELECT 製品名,カテゴリ,機能,型番,数量,価格,説明 FROM WL_SCHEMA.製品表" RESULT=rslt> (2)

<!IF ’defined(tbl)’>

<!UNDEFVAR tbl>

<!/IF>

<!VAR tbl SCOPE=GLOBAL VALUE=’listlen(rslt)’>

全部で <!HREPLACE tbl> 件あります.<BR>

<!IF ’!defined(start)’>

<!UNDEFVAR start>

<!/IF>

<!VAR start SCOPE=GLOBAL> (3)

<!SETVAR start 0>

(そのうち,1 件 ~ <!IF ’5 < tbl’> 5

<!ELSE> <!HREPLACE tbl> <!/IF> 件を表示しています)<BR>

<TABLE BORDER=1>

<TR>

<TD>製品名</TD>

<TD>カテゴリ</TD>

<TD>機能</TD>

<TD>型番</TD>

<TD>数量</TD>

<TD>価格</TD>

<TD>説明</TD>

</TR>

<!FOR i 0 4>

<TR>

<TD><!HREPLACE ’rslt[start+i]{製品名}’></TD>

<TD><!HREPLACE ’rslt[start+i]{カテゴリ}’></TD>

<TD><!HREPLACE ’rslt[start+i]{機能}’></TD>

<TD><!HREPLACE ’rslt[start+i]{型番}’></TD>

<TD><!HREPLACE ’rslt[start+i]{数量}’></TD>

<TD><!HREPLACE ’rslt[start+i]{価格}’></TD>

<TD><!HREPLACE ’rslt[start+i]{説明}’></TD>

</TR>

<!/FOR> (4)

</TABLE>

<!IF ’start+5 < tbl’>

<FORM ACTION="$SYSTEM::FMTR" METHOD="POST">

<INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="page_fmt.html">

<INPUT TYPE="HIDDEN" NAME="DIRECTION" VALUE="NEXT">

<INPUT TYPE="SUBMIT" VALUE="次のページ">

</FORM> (5)

<!/IF>

・・・

(1) 変数“rslt”の宣言

検索情報を格納する変数“rslt”を、グローバル変数として宣言し、初期値として0を設定します。

(2) データベースの検索

データベースを全件検索し、結果を“rslt”に格納します。

(3) 変数“start”の宣言

表示件数をカウントする変数“start”を、グローバル変数として宣言し、初期値として0を設定します。

(5) 次のページの表示

次のページ(5件以降)を表示する場合、page_fmt.html に処理を引き継ぎます。

page_fmt.html

・・・

全部で <!HREPLACE tbl> 件あります.<BR>

<!IF ’QUERY::DIRECTION eq "PREV"’>

<!SETVAR start ’start-5’>

<!ELSE>

<!SETVAR start ’start+5’>

<!/IF> (6)

(そのうち,<!HREPLACE ’start+1’> 件 ~

<!IF ’start+5 < tbl’><!HREPLACE ’start+5’>

<!ELSE><!HREPLACE tbl><!/IF> 件を表示しています)<BR>

<TABLE BORDER=1>

<TR>

<TD>製品名</TD>

<TD>カテゴリ</TD>

<TD>機能</TD>

<TD>型番</TD>

<TD>数量</TD>

<TD>価格</TD>

<TD>説明</TD>

</TR>

<!FOR i 0 4>

<TR>

<TD><!HREPLACE ’rslt[start+i]{製品名}’></TD>

<TD><!HREPLACE ’rslt[start+i]{カテゴリ}’></TD>

<TD><!HREPLACE ’rslt[start+i]{機能}’></TD>

<TD><!HREPLACE ’rslt[start+i]{型番}’></TD>

<TD><!HREPLACE ’rslt[start+i]{数量}’></TD>

<TD><!HREPLACE ’rslt[start+i]{価格}’></TD>

<TD><!HREPLACE ’rslt[start+i]{説明}’></TD>

</TR>

<!/FOR> (7)

</TABLE>

<BR>

<!IF ’start-5 >= 0’>

<FORM ACTION="$SYSTEM::FMTR" METHOD="POST">

<INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="page_fmt.html">

<INPUT TYPE="HIDDEN" NAME="DIRECTION" VALUE="PREV">

<INPUT TYPE="SUBMIT" VALUE="前のページ"> (8) </FORM>

<!/IF>

<!IF ’start+5 < tbl’>

<FORM ACTION="$SYSTEM::FMTR" METHOD="POST">

<INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="page_fmt.html">

<INPUT TYPE="HIDDEN" NAME="DIRECTION" VALUE="NEXT">

<INPUT TYPE="SUBMIT" VALUE="次のページ"> (9) </FORM>

<!/IF>

・・・

(6) 結果表示画面の設定

[次のページ]ボタンがクリックされて画面が表示された場合と、[前のページ]ボタンがクリックされて画面が表示された場 合に分けて、この画面では何番目のデータから表示するかを設定します。

引き継いだ“rslt”と“start”を使用して次の5件を表示します。

(7) 検索情報の表示

引き継いだ“rslt”と“start”を使用して次の5件を表示します。

(8) 前のページの表示

前のページを表示する場合、page_fmt.htmlに処理を引き継ぎます。

(9) 次のページの表示

次のページを表示する場合、page_fmt.htmlに処理を引き継ぎます。

解説

page.html でデータベースの全件検索をし、検索した情報を“rslt”に格納します。

次に、“rslt”から件数のカウントを行う“start”を使用して、最初の5件を表示します。

続けて次の5件を表示する場合、page_fmt.html に処理を引き継ぎます。

page_fmt.html では、page.html から引き継いだ“rslt”から、同じく引き継いだ“start”を利用して次の5件を表示します。

さらに次の5件を表示する場合、または前の5件を表示する場合は、page_fmt.html に処理を引き継ぎます。

ポイント

個別セションでは、グローバル変数を使用することができますが、共有セションでは使用することができません。

共有セションでは、グローバル変数ではなく、cookieを使用します。cookieの使用については、“3.6.11 共有セション”を 参照してください。

ドキュメント内 WebDBtoolsユーザーズガイド (ページ 43-46)