• 締切済み

ASP,Javascriptチェックボックス値格納

仕事で、急に予約システムの変更を求められていて困っています。 今までラジオボタンで1つしか選択出来なかったものを、チェックボックスで複数選択可能にしたいのですが、複数値を取得後のDBへの格納が上手く出来ません。明日行って、使えるようにしないといけないのですが、知識がないもので、色々なヒントも自分の場合への応用ということが出来ず焦りだけがつのっています・・・皆様にヘルプ頂けるとありがたいです。。 【実行したいこと】DBから一覧を読み込んで表示。同時にチェックボックスを作成。 10件のチェックボックスの値<s_id>(と申込者名等)を、DBのyoyakuテーブルに格納。 (yoyakuテーブルに用意しているs_id1~s_id10に格納。チェックなしの場合も空欄、もしくは0等チェックなしであることがわかる値を格納) ※文字数の関係上、関係があると思われる部分のみ抜粋。 ☆入力画面 <% '『data.mdb』のクエリ(Q_total)により申込が終了している場合にラジオボタンを見えなくするスクリプト   Dim Conn, rs, SQL   Dim db, DBName   db = Server.MapPath("data.mdb")   DBName = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db   Set Conn = Server.CreateObject("ADODB.Connection")   Conn.Open DBName SQL = "SELECT * FROM Q_total_ninkitsuki" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open SQL, Conn,3,3 Do While Not rs.EOF %> <%If rs.Fields("flg") = 1 Or rs.Fields("simekiribi") =< rs.Fields("loadtime")Then %> <tr> <td> <span class="red">終了</span> <input type="checkbox" name="T6" id="T6" value="<%=rs.Fields("s_id")%" disabled /></td> <td colspan="1"><%=rs.Fields("s_id")%></td> <td colspan="2"><%=rs.Fields("date")%></td> <td colspan="2"><%=rs.Fields("s_id_count")%></td> </tr> <%Else %> <tr> <td> <input type="checkbox" name="T6" id="T6" value="<%=rs.Fields("s_id")%>" />             </td> <td colspan="1"><%=rs.Fields("s_id")%></td> <td colspan="2"><%=rs.Fields("date")%></td> <td colspan="2"><%=rs.Fields("s_id_count")%></td> </tr> <%End If rs.MoveNext Loop rs.Close Set rs = Nothing Conn.Close Set Conn = Nothing %> ☆データが送られる側のページ <% moshikomi = Request.Form("apply") busitu = Request.Form("busitu") f_syokuban = Request.Form("syokuban") f_name = Request.Form("f_name") ipcheck = Request.ServerVariables("REMOTE_ADDR") torokuday = Request.Form("S12") mail = Request.Form("mail") yakushoku = Request.Form("yakushoku") radio = Request.Form("T6") f_date = split(radio,",") s_id = f_date(0) s_id1 = f_date(1) s_id2 = f_date(2) s_id3 = f_date(3) s_id4 = f_date(4) s_id5 = f_date(5) s_id6 = f_date(6) s_id7 = f_date(7) s_id8 = f_date(8) s_id9 = f_date(9) s_id10 = f_date(10) %> dim SLIST,RSB,SLIST1,RSB1,KDB db1=server.mappath("data.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db1 Set KDB = Server.CreateObject("ADODB.Connection") KDB.open DBName SLIST = "SELECT * FROM yoyaku" Set RSB = Server.CreateObject("ADODB.Recordset") RSB.Open SLIST, KDB,3,3 rsb.AddNew rsb("moshikomi") = moshikomi rsb("busitu") = busitu rsb("syokuban") = f_syokuban rsb("name") = f_name rsb("mail") = mail rsb("torokuday") = now() rsb("ipaddress") = Request.ServerVariables("REMOTE_ADDR") rsb("s_id") = s_id rsb("s_id1") = s_id1 rsb("s_id2") = s_id2 rsb("s_id3") = s_id3 rsb("s_id4") = s_id4 rsb("s_id5") = s_id5 rsb("s_id6") = s_id6 rsb("s_id7") = s_id7 rsb("s_id8") = s_id8 rsb("s_id9") = s_id9 rsb("s_id10") = s_id10 rsb("yakushoku") = yakushoku rsb.UpDate RSB.close Set RSB = Nothing KDB.close Set KDB = Nothing %> ☆データを入れるアクセスの設定 ID      オートナンバー型 moshikomi テキスト型 s_id テキスト型 s_id1     テキスト型 s_id2     テキスト型 s_id3     テキスト型 s_id4     テキスト型 s_id5     テキスト型 s_id6     テキスト型 s_id7     テキスト型 s_id8     テキスト型 s_id9     テキスト型 s_id10     テキスト型 syokuban  テキスト型 busitu    テキスト型 yakushoku  テキスト型 name    テキスト型 mail     テキスト型 torokuday  テキスト型 renraku   テキスト型

みんなの回答

  • onos
  • ベストアンサー率81% (127/155)
回答No.2

えと、チェックボックスを10個つくったら、値は10個返ってきてそれぞれにチェックされてる/されてないがはいっている、と「思い込んで」いませんか? HTMLの動作ってそんな感じにならないはず。 チェックされているチェックボックスの値だけが配列になって、いやもっと低レベルでみるとカンマでつながってだったかな?まあ、そういう形で値が返ってくるはずです。 なのでインデックスが有効範囲にない、といわれて当然だと思います。 まずは実際にどういう値が返って来るのかを、「思い込み」ではなく実際に確かめてみることが必要だと思います。

回答No.1

>複数値を取得後のDBへの格納が上手く出来ません。 どうやってうまく行ってないの?

splasho
質問者

補足

Taiyonoshizukuさま、見て頂いてありがとうございますm(_ _)m 10個あるチェックボックス全てにチェックを入れないと、 実行時に以下のようなエラーメッセージが出てしまいます。 このテスト時は、1番,3番にチェックを入れました。 2番だけにチェックを入れると'[number: 1]'といった感じになります。 エラーが出ているのは、s_idのあたりです。 【エラー】 Microsoft VBScript 実行時エラー エラー '800a0009' インデックスが有効範囲にありません。: '[number: 2]' /jinji/test_kenshu/yoyaku_kanryou.asp, 行 33

関連するQ&A

  • チェックボックスとテキストの受け渡し

    やりたい事は20件位の表示の中から納品書を印刷する為に選択し数量変更をして 確認画面をだしたいのですが... チェックボックスのチェックされているデーター、テキストボックスのデーター 両方ともデーターを受け取る事はできたのですが、チェックボックスはチェックされているデーターだけで、テキストボックスは最初から、全く別のレコードのデーターが入ってしまいます。どうしたらチェックされたレコードのテキストを受け取れるか教えて下さい。 sentaku.asp <input type="checkbox" name="chk" value="<%=RS.fields("注文番号")%>"> <INPUT size="10" type="text" name="su" maxlength="10" value="<%=RS.fields("注文残")%>"> kakunin.asp <% For i = 1 To Request.Form("chk").Count chuno1 = Request.Form("chk")(i) nousu1 = Request.Form("su")(i) next %>

  • syntax error

    下記プログラムで2箇所syntax errorが出て、それぞれunexpected $conn、unexpected $rsが出ます。記法が誤っていますでしょうか? <?php $sv = "localhost"; $dsn = "database_4"; $user = ""; $pass = ""; $enc_disp = "EUC-JP"; $enc_db = "SJIS"; function cnv_enc($string, $to, $from) { $det_enc = mb_detect_encoding($string, $from . ", " . $to); if ($det_enc and $det_enc != $to) { return mb_convert_encoding($string, $to, $det_enc); } else { return $string; } } $conn = new COM("ADODB.Connection") $conn->open("Provider=SQLOLEDB;Data Source=$sv;Initial Catalog=$dsn;User ID=$user;Password=$pass;"); $rs = new COM("ADODB.Recordset") $sql = "SELECT * FROM music WHERE music_0_ID=1"; $rs->open($sql, $conn); echo "<table border=\"1\">"; echo "<tr>"; echo "<td>ID</td>"; echo "<td>大分類</td>"; echo "<td>日本語作曲家名</td>"; echo "<td>日本語曲名</td>"; echo "</tr>"; while (!$rs->eof) { echo "<tr>"; echo "<td>".$rs->fields["music_0_ID"]->value."</td>"; echo "<td>".cnv_enc($rs->fields["大分類"]->value, $enc_disp, $enc_db)."</td>"; echo "<td>".cnv_enc($rs->fields["日本語作曲家名"]->value, $enc_disp, $enc_db)."</td>"; echo "<td>".$rs->fields["日本語曲名"]->value."</td>"; echo "</tr>"; $rs->movenext(); } echo "</table>"; $rs->Close(); $conn->Close(); ?>

    • ベストアンサー
    • PHP
  • JavaScript+ASPによるaccessのデータの追加、削除

    JavascriptでASP(IIS)を使ってAccess2000にあるデータをブラウザに表示する事はできたのですが、今度はaccessにあるデータを追加、削除したいのですが、SQLを変えてもエラーがでます。 どのようにしたらいいですか?教えてください。 初心者なもんで、質問が分かりにくいと思いますが、お許しください。どうぞ、よろしくお願いします。 <%@Language="JavaScript" %> <html> <head> <title>一覧→詳細</title> </head> <body> <table border="1"> <tr> <th>商品コード</th><th>商品名</th><th>価格</th> </tr> <% var db=new ActiveXobject("ADODB.Connection"); db.Open("Webware"); var rs=db.Execute("SELECT * FROM products"); while(!rs.EOF){ %> <tr> <td><a href="descj.asp?id=<%=Server.URLEncode(rs("id"))%>"> <%rs("id")%></a></td> <td><%=rs("nam")%></td> <td><%="\\" + rs("val") %></td> </tr> <% rs.MoveNext(); } %> </table> </body> </html>

  • チェックボックスの値を新規でレコードへ格納したい(Access2003 ADO)

    宜しくお願いします。 Access2003(WinXP)です。ADOで書いています。 テーブルへ新しいレコードを作成していれる時と 既にあるレコードへの編集なのですが、 新規の時は AddNew を書くだけで 他は同じコードを利用しています。 テキストボックスやコンボボックスの値は入るのですが チェックボックスのTrue、Falseのところで 新規の時だけエラーになります。 編集の時は大丈夫です。 rs.Fields("フィールド名").Value = Form.チェックボックス名.Value と入れているのですが、いけないのでしょうか。 ちなみにDAOで書いていたのを途中でADOに変えています。 rs.Fields!フィールド名= としてもだめでした。 分かる方、お願いします。

  • Access2000のデータをASPで表示させるには?

    間違ってソースを全部消してしまって、記憶を頼りに戻してみたのですが、Accessのデータの表示方法がわからなくなってしまいました。 ↓これがそのソースです <%@ LANGUAGE="VBScript" %> <% Option Explicit %> <Html> <Head> </Head> <Body> <% Dim db,rs,sql Set db = Server.CreateObject("ADODB.Connection") db.Open ("db1")←データベース名入れるんですよね? sql = "Select id,namae,n_yomigana,juusyo,j_yomigana From table1 where db1" Set rs = db.Execute (sql) Response.Write rs.fields("id") Response.Write "<br>" Response.Write rs.fields("namae") Response.Write "<br>" Response.Write rs.fields("n_yomigana") Response.Write "<br>" Response.Write rs.fields("juusyo") Response.Write "<br>" Response.Write rs.fields("j_yomigana") Response.Write "<br>" rs.close db.close %> </Body> </Html> ソースを丸ごと載せてしまってごめんなさい、読みにくいですよね。 足りないところや直し方が思い出せなくて困っています。 ご迷惑おかけしますが、アドバイスお願いします。

  • 複数の値を1つのフォームで受ける効率的な方法

    1つのフォームに氏名・年齢・電話番号の3つの項目があり、それぞれ 検索用のテキストボックスと検索ボタンが配置されています。 氏名のテキストボックスと検索ボタンを"A" 年齢のテキストボックスと検索ボタンを"B" 電話番号のテキストボックスと検索ボタンを"C"として 検索キーを入力して検索ボタンを押下して次のフォームに移ります。 その受けるフォームを現在、作成しているのですが 受け取った値がAであれば氏名で、Bであれば年齢で、Cであれば電話番号で それぞれSQLにてデータベースのテーブルより検索して表示させるフォームを作りたいのですが 受け取った値がいずれの値なのかを判断して表示させる方法が思いつきません。 また、検索するテーブルも5つあります。 効率のいい記述をご教示願います。 ASPの時は以下の記述をしておりました。 長いのでRS1だけまで表記しました。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ LANGUAGE="VBScript" %> <HTML> <HEAD> <TITLE>検索結果一覧</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <CENTER> <% If Request.Form("年齢") <> "" Then sqldata1 = "select * from テーブル1 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata2 = "select * from テーブル2 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata3 = "select * from テーブル3 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata4 = "select * from テーブル4 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata5 = "select * from テーブル5 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" End If Dim Conn,SQL1,RS1,SQL2,RS2,SQL3,RS3 Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout = 5000 'Conn.open "driver={SQLServer};Server=raichou;UID=ID;PWD=PW;Database=NAME" Conn.open "NAME","ID","PW" SQL1 = sqldata1 Set RS1 = Server.CreateObject("ADODB.Recordset") RS1.Open SQL1, Conn,3,3 %> <span style="font-size:24pt;color:#ff0033"><B>検索結果一覧</B></span> <TABLE border="3" BORDERCOLOR="#9999ff" cellspacing="1" cellpadding="1"> <TR> <TD><span style="font-size:10pt;color:#993333">氏名</span></TD> <TD><span style="font-size:10pt;color:#993333">電話番号</span></TD> <TD><span style="font-size:10pt;color:#993333">年齢</span></TD> </TR> <% Do while Not RS1.EOF %> <TR> <TD><span style="font-size:10pt;color:#000000"><%=RS1("氏名")%></span></TD> <TD><span style="font-size:10pt;color:#000000"><%=RS1("電話番号")%></span></TD> <TD><span style="font-size:10pt;color:#000000"><%=RS1("年齢")%></span></TD> <TD align="center"> <FORM action="view.asp?table=テーブル1" method="post"> <input type="hidden" name="id" value="<%=RS1("ID")%>"> <input type="submit" value="詳細"> </form> </TD> </TR> <% RS1.MoveNext Loop RS1.close Set RS1=Nothing Conn.close Set Conn=Nothing %> </TABLE> <BR> <INPUT TYPE="button" value="戻る" onClick="javascript:history.back();"> </CENTER> </BODY> </HTML>

    • ベストアンサー
    • Java
  • チェックボックス、セレクトボックスを組み合わせた複雑な計算表を作りたい

    下記のような条件を満たす計算表を作りたいのですが、どのように作っていけばいいのか、さっぱり分かりません。 殆ど初心者に近い状態で、このような複雑な計算表を作るのは不可能に近いのは分かっているのですが、是非、ご教授願いたいと思い、質問させて頂きたいです。 <html> <head> <title></title> </head> <body> <form name=all> <table> <tr> <td colspan=2>a</td> <td colspan=7> <input name=AA type=checkbox>AA <input name=BB type=checkbox>BB </td> </tr> <tr> <td colspan=2>b</td> <td colspan=7> <input name=CC type=checkbox>CC <input name=DD type=checkbox>DD </td> </tr> <tr> <td colspan=2>c</td> <td colspan=7><input name=nn type=text></td> </tr> <tr> <td colspan=2>d</td> <td colspan=7> <input name=EE type=checkbox>EE <input name=FF type=checkbox>FF <input name=GG type=checkbox>GG <input name=HH type=checkbox>HH </td> </tr> <tr> <td colspan=2>eA</td> <td colspan=7><input name=PP type=checkbox>PP</td> </tr> <tr> <td rowspan=5>eB</td> <td>e1</td> <td>i1</td> <td colspan=3> <select name=i1> <option>1</option> <option>2</option> </select> </td> <td>I2</td> <td colspan=2> <select name=i2> <option>1</option> <option>2</option> </select> </td> </tr> <tr> <td>e2</td> <td>J1</td> <td colspan=3> <select name=j1> <option>1</option> <option>2</option> </select> </td> <td>J2</td> <td colspan=2> <select name=j2> <option>1</option> <option>2</option> </select> </td> </tr> <tr> <td>e3</td> <td>K1</td> <td colspan=3> <select name=k1> <option>1</option> <option>2</option> </select> </td> <td>K2</td> <td colspan=2> <select name=k2> <option>1</option> <option>2</option> </select> </td> </tr> <tr> <td>e4</td> <td colspan=7> <select name=l1> <option>1</option> <option>2</option> </select> </td> </tr> <tr> <td>f5</td> <td colspan=7> <select name=m1> <option>1</option> <option>2</option> </select> </td> </tr> <tr> <td colspan=2>f</td> <td>f1</td> <td colspan=3><input name=oo type=text></td> <td>f2</td> <td colspan=2><input name=pp type=text></td> </tr> </table> <br> <input name=keisan1 type=submit value=計算1>  <input name=clear1 type=reset value=クリア1> </form> <br> <table><tr> <td colspan=9> a~dの計<input type=text name=qq>-f1<input type=text name=rr>=ABC<input type=text name=ss> </td> </tr> <tr> <td colspan=9> eA+eBの計<input type=text name=tt>-f2<input type=text name=uu>=DEF<input type=text name=vv> </td> </tr> <tr> <td colspan=9>ABC+DEFの計<input type=text name=ww>×dで選択したときの代入数字=<input type=text name=xx></td> </tr> </table> <br> <input name=kei2 type=submit value=計算2> <input name=clear2 type=reset value=クリア2> </center> </body> </html> 条件として、 ・「a~d」は、必ず入力 ・「e~f」は、該当する場合にのみ ・チェックボックスの行は、どれか1つだけを必ず選択(複数選択した場合、注意を促す) ・セレクトボックスの行は、 該当する場合のみ ・最後に「計算」ボタンを押した時に、未入力の部分(a~d)の注意を促す 計算なのですが、 1.「a」のAAを選択、「b」のCCを選択、「c」に20を入力、「d」のEEを入力したときの場合の計算 その時、「d」のEEには10を代入という形で計算したい。(他のFF=20,GG=30,HH=40) ※「a」のBBを選択した場合は、「d」のEE=15,FF=17,GG=22,HH=27となった場合も 2.上記の条件に加え、「eB」の「e1」は1、「e2」も1を選択、「e4」は2を選択した時の計算 その時、「e1」には「100」を代入、「e2」は「150」を代入、「e4」には「80」を代入で計算したい 3.上記「2」の条件に加え、「f1」に150、「f2」に70と入力した場合、「a~d」の計算合計から「f1」を引き、「e」のAとBの計算合計から「f2」を引く 長くて条件等も分かりづらいかもしれませんが、宜しくお願いします。

  • JavaScript チェックボックスで指定の箇所をチェックする方法

    初めての投稿ですが、よろしくお願いします。m(_ _)m 現在下記ソースの様なチェックボックスで出来たテーブルフォームを作成しております。 一覧表の行or列の先頭にあるチェックボックスを選択すると 選択された行or列にあるチェックボックスを全てチェックされ、 先頭のチェックボックスを外すと全て解除される。 (例:横A□チェックボックスを選択すると右にある全てのチェックボックスが選択される。チェックを外すと右にある全てのチェックボックスが未選択になる。) という事を行いたいと思い、色々調べてみたのですが、 発見できませんでしたので質問させていただきました。 どうかお助けください。m(>_<)m -- <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE></TITLE> </HEAD> <BODY> <form name="F1"> <table border="1"> <tr> <td>一覧</td> <td>縦A<br><input type="checkbox" id="" /></td> <td>縦B<br><input type="checkbox" id="" /></td> <td>縦C<br><input type="checkbox" id="" /></td> </tr> <tr> <td>横A<input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> </tr> <tr> <td>横B<input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> </tr> <tr> <td>横C<input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> <td><input type="checkbox" id="" /></td> </tr> </table> </form> </BODY> </HTML>

  • VBSの中で書くSQL文の記述方法

    よろしくお願いします。 select * from db1 into id,password,date,name where db1_id = **** and db1_password = **** and db1_date = 99999999; (db1_id,db1_password,db1_dateがプライマリキー) db1という表からプライマリキーに該当したデータを取り出し、 変数に格納したいと思っています。 このSQL文をASPのVBSの中で実現する方法を教えてください。 <% Dim Conn,SQL,RS Dim id Dim password Dim date Dim name db1=server.mappath("db1.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db1 Set Conn = Server.CreateObject("ADODB.Connection") Conn.open DBName SQL = "select * from db1" INTO = "into id,password,date,name" WHERE = "where db1_id = **** and db1_password = **** _ and db1_date = 99999999" SQL = SQL & INTO & WHERE & ";" Set RS = Server.CreateObject("ADODB.Recordset") RS.Open SQL, Conn,3,3 %> これでうまくいくかな~と思ったのですが・・・。

  • ASPでのチェックボックスの使い方について

    初心者ですみません。 ASPを使い、データベース(mdbファイル)にアクセスし、 データを共有しようとしています。 そのなかで、チェックボックスを使いたいのですが、チェックボックスの 値の取得と、更新時にそれがどうなるのか(ちゃんとチェックが ついた状態で表示されるのか)がわかりません。 フォームには、 <input type="checkbox" name="ビル:受付番号" value="OK"> というように、valueを設定していますが、データベースにこの情報が 格納されるには、 RS("ビル:受付番号") = Request.Form("ビル:受付番号") では「OK」という値は格納されないんですね。 #ちなみに格納先はテキスト型です 別にOKじゃなくても、falseでもなんでもいいんですが、情報が ちゃんとデータベースに反映されるようにまずしたいです。 さらにデータベースに載せた情報は後から更新することも考えられますので、 更新作業をしたときに、ちゃんとOKとなっている部分が チェックボックスにチェックされた状態で表示されることを期待して いるのですが、そういったことも可能でしょうか。 全然勉強不足で申し訳ありません。 こういったことはVBを勉強すればわかるんでしょうか。 何卒ご指南ください。

専門家に質問してみよう