[三流君] −−>
[ASPで遊ぶ、失敗する] −−>
[バックナンバー一覧]
−−> No.092 FORM SELECTタグのOPTION値を受け取って処理を行う
FORM SELECTタグのOPTION値を受け取って処理を行う
本文(発行内容)
<FORM SELECTタグのOPTION値を受け取って処理を行う>
こんにちは、三流プログラマーのKen3です。
今回は、
処理を分解して考えましょう、事例を探したり、単体テストしましょう
SELECTタグのOPTION値を受け取って処理を行う
そんなお話です。
/*
* 1.今回のキッカケ
*/
掲示板に下記の書き込みをいただきました。
------------
>内容としまして、プルダウンメニューとチェックボックスのある
>フォームでのデータ表示(テーブル)検索についてなのですが
>
>例えばデータはtest.mdbでmachineテーブル
>フィールドはそれぞれ
>ID:オートナンバー
>M_name:A,B,C,D,E,F
>M_number:1,2,3,4
>M_coments:コメント
>です。
>
>メインのフォームに
>プルダウンメニュー(M_nameのA,B,C,D,E,F)と
>チェックボックス4つ(M_numberの1,2,3,4)があります。
>※M_nameのアルファベットとM_numberの数字はそれぞれtest.mdb上
>に複数(重複)存在します。
>
>そこで検索例としまして
>「A」が"1"でそれぞれフォームで選択&チェックし、”表示”
>ボタンでフォーム下にテーブルとしてデータを表示したいと
>思い投稿させて頂きました。
>ちなみにチェックボックスは必須ではありません。
>チェックが無いときは、プルダウンメニューで選択したフィールド
>(A,B,C,D,E,F)の全フィールドを表示させるみたいに・・・と
>言う感じです。
---------------
前回の質問の処理も中途半端の尻切れトンボだったのに、
この回答者(Ken3)はダメだ頼りにならないと思われてもしかたない状態で、
再度チャンスが来たので、汚名挽回したいですね。
※なんて思いつつ、今回の回答もキレが無いんだけど
/*
* 2.処理を分解して考える
*/
社内ツールや自分が使うツールだと、
設計書を書かないで、要求だけ聞いて(目的だけ自分で考えて)
作り始めると思います。
が、最低限、入力と出力のイメージを書いておきます。
>メインのフォームに
>プルダウンメニュー(M_nameのA,B,C,D,E,F)と
>チェックボックス4つ(M_numberの1,2,3,4)があります。
FORMで入力された
SELECTタグの値 と CHECKBOXタグの値
を
受け取るのかぁ。
そして、SQL文を作成して、データの表示ですね。
SQL文の作成では、
チェック無しの時は、全てのデータを表示(全てにチェックと同様に扱う)
が注意ポイントかなぁ。
プログラムは流用だぁ〜
と
言えるくらい自分の記憶やライブラリ、社内資産がまとまっていれば楽なんだけど、
分解した処理で、自分がやったことが無い、そんな箇所をチェックしたり、
似ている処理を探したり、社内事例を検索する(webで事例を集めたりする)
※裁判で弁護士が過去の判例を検索して、被告の状況と比べる感じと似てるかなぁ。
/*
* 3.FORM SELECT タグのデータを受け取る
*/
自分のライブラリを見ると、チェックボックスの事例は、
No.45 HTML FORM INPUT TYPE="CHECKBOX" チェックボックスの入力
http://www.ken3.org/backno/backno_asp10.html#45
で簡単な解説、
http://www.ken3.org/cgi-bin/test/test045-1.asp
で、実際にCHECKBOXを使用したテストを行ってます。
あれれ、SELECTのタグのサンプル無いよ(笑)
ありそうで無かったんだなぁ。
だからSELECTタグってなんだよ。
^^^^^^^^^^^^^^^^
あっ、HTMLのFORMでプルダウンの選択を書く時のタグです。
<br>
あなたの好きなパリーグの球団は?
<SELECT name="pl">
<option value="lions">西武</option>
<option value="buffaloes">近鉄</option>
<option value="hawks">ダイエー</option>
<option value="marines">ロッテ</option>
<option value="fighters">日本ハム</option>
<option value="bluewave">オリックス</option>
</SELECT><br>
こんな感じで、SELECTとOPTIONのタグで構成されてます。
option value=""だとどうなるのか少し興味があったので、
あなたの好きなセリーグの球団は?
<SELECT name="cl">
<option value="">特に無しorわからない</option>
<option value="1">阪神</option>
<option value="2">中日</option>
<option value="3">ヤクルト</option>
<option value="4">巨人</option>
<option value="5">広島</option>
<option value="6">横浜</option>
</SELECT><br>
で、""特に無しを設定してみました。
FORMの入力と受け取ったデータを表示するサンプルを
http://www.ken3.org/cgi-bin/test/test092-1.asp
で、書いてみます。(ソースの全ても見れます。)
実際にテストしてみてください。
/*
* 4.値を受け取りSQLを発行する
*/
入力関係のテストが終了したので、
今度は、受け取った値を使用して、DBからデータを表示してみます。
<FORM ACTION="test092-2.asp" METHOD="POST">
<font color="blue">SELECT OPTION の 入力(選択) TEST</font><br>
<SELECT name="KUBUN">
<option value="">全てのデータ</option>
<option value="ASP">ASPのデータ</option>
<option value="VBA">VBAのコメント</option>
<option value="GUCHI">愚痴系</option>
<option value="24H">24Hコンビニ</option>
</SELECT>
<INPUT TYPE="submit" VALUE="検索する">
</FORM>
で、SELECT name="KUBUN"とデータを送り、
'KUBUNが送られてきたかチェックする
strKUBUN = Request.Form("KUBUN")
If Len(strKUBUN) <> 0 Then 'KUBUNが在りの時(0文字以上の時)
'KUBUNを条件にWHERE句を作る
strWHERE = "Where F_KUBUN = '" & strKUBUN & "' "
Else
'条件無しの時は、空白にしておく
srrWHERE = " "
End If
手抜きで、””の場合と送られてこなかった場合を判断するために、
Len関数で文字数が0以外かをチェックして、
WHERE句を作ってみました。
あとは、普通に、
'SQL文を作成する
strSQL = "Select * From KANSOU " '感想(KANSOU)テーブルから全項目(*)
strSQL = strSQL & strWHERE
strSQL = strSQL & "ORDER BY WriteTime DESC" '並べ替えは時間の降順
で、SQL文を組み立ててみました。
http://www.ken3.org/cgi-bin/test/test092-2.asp
でテストできます。(ソースの全ても見れます。)
/*
* 5.終わりの挨拶 </HTML>
*/
今回は、
SELECTタグで入力(選択)したデータを受け取るサンプルでした。
次回は、チェックボックスと組み合わせて使ってみたいと思います。
いろいろと問題点や疑問点を残しつつ、脱線・寄り道の多いメルマガですが、
今後とも、よろしくお願いします。
何かの参考となれば幸いです。
ASP、VBScript勉強中の三流プログラマーのKen3でした。
フィードバック
ASP系の→[掲示板]←を覗く、質問を書き込む
評価・感想
三流君の主なリンク先
[アクセスランキング]
[サイトマップ]
[リンク先・相互リンク先など]
Ken3の日記(weblog) --
[広告・副収入系]
[プログラマー業務の愚痴]
[VBA系の話題]
[ASP系の話題]
[コンビニ系ネタ]
[その他]
その他 宣伝広告