WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:DBから条件に合うものを検索して全て表示させたい

0:[投稿] クマスケ [2005/01/31 20:09 ][環境:OS:WindowsXP Professional ブラウザ:IE6 開発ツール:Microsoft VisualInterDev6.0 OS:Windows2000Server DB:SQLServer2000]

皆さんよろしくお願いします。

テキストボックスや、ドロップダウンボックスに入力された値を検索条件として、ボタンを押すことにより検索を行い、該当するデータ全てを画面上に全て表示させるaspを作成しています。
また、検索されたデータ1行につき、ラジオボタンを1個つけようと思っています。
今の状況なのですが、ボタンを押しても何も反応してくれません。ボタンを押してもエラーは表示されず画面がぜんぜん更新されません。

ソースを記述いたしますので、ご指摘お願いします。

<%@LANGUAGE="VBScript"%>

<%
'***** 使用オブジェクト宣言 *****
Dim objCon
Dim objRS

'***** 使用変数名宣言(検索用) *****
Dim K_No,K_Name,K_Class


'***** データベース接続 *****
Set objcon = Server.CreateObject("ADODB.Connection")
objcon.open "LocalServer","sa","Neurology"
Set ObjRS = Server.CreateObject("ADODB.Recordset")
objRS.open"SELECT * FROM SJ_info",objCon

%>

<html>
<head>
<title>条件検索</title>
</head>

<body>
<p><b><font size="5">条件検索</font></b></p>

<p><b>番号 <input name="No" ></b></p>
<p><b>名前 <input name="Name" size="59" ></b></p>
<b>クラス<select size="1" name="Class">
 <option selected value="選択してください">選択してください</option>
 <option selected value="1組">1組</option>
 <option selected value="2組">2組</option>
 <option selected value="3組">3組</option>
</select></b>

<P><INPUT type=submit value=データ検索 name=Reference><INPUT type=Reset value=クリア></P>

<table border="1" width="100%">
 <tr>
   <td width="5%" bgcolor="#ccffff"><font size="2">番号</font></td>
   <td width="8%" bgcolor="#ccffff"><font size="2">名前</font></td>
   <td width="6%" bgcolor="#ccffff"><font size="2">クラス</font></td>
 </tr>
</table>

<%

K_No=Request.Form("No")
K_Name=Request.Form("Name")
K_Class=Request.Form("Class")

'***** 検索結果の表示 *****
If Request.Form("Reference") = "データ検索" Then
sql = "select [no],[name],[class] from inf"
objRS.open sql,Objcon

Do Until ObjRS.EOF
    Response.Write"<input type=""radio"" value="""& ObjRS("no")&""" name=""Check"">"
%>
        <td width="5%"><%=ObjRS("no")%></td>
        <td width="8%"><%=ObjRS("name")%></td>
        <td width="6%"><%=ObjRS("class")%></td>
<%
    ObjRS.MoveNext    
LOOP    

End If
%>

</body>

<%
'***** データベース接続切断&オブジェクト終了 *****
ObjRS.Close
Set ObjRS = Nothing
objcon.Close
Set objcon = Nothing
%>


1:[回答] gun [2005/02/01 02:14 ]

すごく単純なミスです。
<form>タグがありません。


2:[回答] クマスケ [2005/02/01 09:04 ]

gunさん、回答ありがとうございます。
たしかに<form>タグがないですね。
そんなところを見逃すなんて・・・。

gunさんのご指摘どおりに<form>タグをmethod="post"にして追加したら、ボタンを押すと表示しようとしてくれるのですが、やはり検索結果を表示してくれません。

とりあえず最初に載せたソースでは、データベースにあるデータを全て表示させようとしているのですが、それすらもしてくれません。

一応接続するDB名、DBのフィールド名やテーブル名は間違っていない事は確認しました。他には何が考えられるのでしょうか?

なにとぞご教授お願いします。


3:[回答] ぷり [2005/02/01 12:18 ]

formタグを、どこにどのように追加したの?
それによって動作は全く違ってくるので、必要な情報は小出しにしないで明示した方が、回答者の心象もいいと思うが…


4:[回答] クマスケ [2005/02/01 15:17 ]

ご指摘ありがとうございます。

確かに小出しにしない方がいいですよね。
ですので、<from>タグを追加したソースを記入致します。

ご指摘、ご教授お願いします。

<%@LANGUAGE="VBScript"%>

<%
'***** 使用オブジェクト宣言 *****
Dim objCon
Dim objRS

'***** データベース接続 *****
Set objcon = Server.CreateObject("ADODB.Connection")
objcon.open "LocalServer","sa","Neurology"
Set ObjRS = Server.CreateObject("ADODB.Recordset")
objRS.open"SELECT * FROM SJ_info",objCon
%>

<html>
<head>
<title>条件検索</title>
</head>

<body>
<p><b><font size="5">条件検索</font></b></p>

<form method="post" >

<p><b>番号 <input name="No" ></b></p>
<p><b>名前 <input name="Name" size="59" ></b></p>
<b>クラス<select size="1" name="Class">
<option selected value="選択してください">選択してください</option>
 <option selected value="1組">1組</option>
 <option selected value="2組">2組</option>
 <option selected value="3組">3組</option>
</select></b>

<P><INPUT type=submit value=データ検索 name=Reference><INPUT type=Reset value=クリア></P>

<table border="1" width="100%">
<tr>
  <td width="5%" bgcolor="#ccffff"><font size="2">番号</font></td>
  <td width="8%" bgcolor="#ccffff"><font size="2">名前</font></td>
  <td width="6%" bgcolor="#ccffff"><font size="2">クラス</font></td>
</tr>
</table>

<%
'***** 検索結果の表示 *****
If Request.Form("Reference") = "データ検索" Then
sql = "select * from inf"
objRS.open sql,Objcon

Do Until ObjRS.EOF
   Response.Write"<input type=""radio"" value="""& ObjRS("no")&""" name=""Check"">"
%>
       <td width="5%"><%=ObjRS("no")%></td>
       <td width="8%"><%=ObjRS("name")%></td>
       <td width="6%"><%=ObjRS("class")%></td>
<%
   ObjRS.MoveNext    
LOOP    
End If
%>
</form>
</body>

<%
'***** データベース接続切断&オブジェクト終了 *****
ObjRS.Close
Set ObjRS = Nothing
objcon.Close
Set objcon = Nothing
%>


5:[回答] andi [2005/02/01 16:17 ]

> 検索結果を表示してくれません。

どのような画面が表示されるのでしょうか?

また、どのようにしてデバッグをしているのでしょうか?
VisualInterDevがあればステップ実行も出来たと思いますが。
どこまで処理が上手く行っていて、どこで失敗していますか?


6:[回答] クマスケ [2005/02/01 17:26 ]

> どのような画面が表示されるのでしょうか?

IEで直接このASPファイルを開きますと、“検索結果の表示”のスクリプト以外で構成された画面が表示され、データ検索ボタンを押してもその画面から変わりません。

> どのようにしてデバッグをしているのでしょうか?

VisualInterDevでデバッグを行っていますが、デバックを開始すると内部サーバエラーと出てソースの画面が表示されません。
このエラーはVisualInterDevのデバッグの設定がおかしいのでしょうか?何分VisualInterDevは初めて使うツールですので、ヘルプを見ながら設定も同時に行っているという状況なもので・・・


7:[回答] ふ [2005/02/01 17:56 ]

<form method="post" >にaction指定がないですね。
サーバー処理とクライアント処理の切り分けを理解していないように思えます。


8:[回答] クマスケ [2005/02/01 18:19 ]

> action指定がないですね。
先ほど、
<form method="post" action="test.asp" >
と追加して行ってみました。(test.aspは記載しましたソースのファイル名です)
ですが、回答6で記述した動作から変わりませんでした。

> サーバー処理とクライアント処理の切り分けを理解していないように思えます。

確かに未だにあまり区別がついてないです・・・
action指定に自身のファイル名を指定する事はだめなのでしょうか?


9:[回答] クマスケ [2005/02/01 18:40 ]

ふさんの回答を頂いてから、action指定について調べてみました。
action指定では、URLを使用しなくてはいけないみたいなので、次のように書き換えたのですが未だにできません。

<form method="post" action="http://***.***.***.***/test.asp" >

*のところには、サーバのIPアドレスを入れました。
もう自分ではどうしたいいのかがわかりません。
どなたかご教授お願いします。


10:[回答] gun [2005/02/01 20:26 ]

ASPやCGIの入門ページを検索し、
基本的な仕組みをおさえてみてください。

多分、このままではラチがあかないと思います。


11:[回答] gun [2005/02/01 20:37 ]

まずは、難しいことはなしにして、
下のような簡単なサンプルを作って、
動作を理解されてみてはいかでしょうか。

1番目のページで
ボタンをクリックしたらフォームをサブミットし、
2番目のページで
フォーム要素を受け取って表示する

尚、1番目のページには、
フォーム内にボタンとテキストボックスを配置しておく。


12:[完了] クマスケ [2005/02/01 20:47 ]

> 多分、このままではラチがあかないと思います

わかりました・・・もう一度勉強し直してきます。

回答いただいた皆さん、ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World