MySQLからのデータを一覧表示し、ラジオボタンを動的に作成する方法は?

このQ&Aのポイント
  • MySQLのデータと連動してフォームで動的にラジオボタンを作成する方法を教えてください。
  • 期待したように動作させることができないため、困っています。
  • 希望はラジオボタンの値を配列で取ってくることです。
回答を見る
  • ベストアンサー

複数のラジオボタングループを動的に作成するには?

こんにちは。 MySQLのデータと連動してフォームでラジオボタンの入ったプログラムを書いているのですが、どうも期待したように動作させることができません。よろしくお願いします。 MySQLから検索してきたデータを一覧形式で表示し、各行に3つの選択枝を持ったラジオボタン群をつけたい。イメージとしては以下の通りです。 DATA 1 | あ | ●和食 ○中華 ○洋食 DATA 2 | い | ●和食 ○中華 ○洋食 DATA 3 | う | ○和食 ○中華 ●洋食 [更新ボタン] 更新ボタン1つなので、各行は 1つの<FORM></FORM>の中に入っています。各自のラジオボタンを name="syokuji1", "syokuji2"などと指定して動的に生成すれば受ける方のPHPでは $_POST["syokuji1"]などで取り出せるのですが、MySQLからのデータ数は一定ではないので、ループ等でデータを取り出せずに困っています。 希望はラジオボタンの値を syokuji[0], [1], [2]みたいな配列で取ってくることです。別に配列にこだわりませんが、ループ処理でデータを取り出せたらと考えています。 name="syoukuji[]"も試してみましたが、この場合全ラインで1つの選択しかできなくなってしまいました。 DATA 1 | あ | ○和食 ○中華 ○洋食 DATA 2 | い | ○和食 ○中華 ○洋食 DATA 3 | う | ○和食 ○中華 ●洋食 [更新ボタン] ソースを貼ろうかと思いましたが、とりあえずは仕様の方から質問させていただきました。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#116071
noname#116071
回答No.1

タイトルと質問内容がずれている気がするので、あっているかどうか分かりませんが書いてみます。 例えば <form method="POST> <input type="radio" name="syokuji1" value="和食">和食 <input type="radio" name="syokuji1" value="中華">中華 <input type="radio" name="syokuji1" value="洋食">洋食 <input type="radio" name="syokuji2" value="和食">和食 <input type="radio" name="syokuji2" value="中華">中華 <input type="radio" name="syokuji2" value="洋食">洋食 <input type="submit" value="更新"> </form> という感じでラジオボタンのグループを作成。 syokuji1では和食を選択、syokuji2では中華を選択し、更新ボタンを押せば $_POST["syokuji1"] = "和食" $_POST["syokuji2"] = "中華" と、POSTを受け取る側では取り出すことができますが、これではダメなのでしょうか? このsyokuji1~syokuji幾つか分からない数が続いていた場合に、このデータを取り出す方法が分からないのでしょうか? このような場合は、foreachを利用します。 foreach($_POST as $key => $val){ echo "KEY = $key $val<br>"; }

参考URL:
http://php.benscom.com/manual/ja/control-structures.foreach.php
harutomo777
質問者

お礼

質問がわかりにくくてスイマセンでした。 >このsyokuji1~syokuji幾つか分からない数が続いていた場合に、このデータを取り出す方法が分からないのでしょうか? そうです。この foreachを全然思いつきませんでした。(何度か使ったことはあるのですが) おかげで先に進めそうですありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

<input type="radio" name="syokuji[1]" value="和食">和食 <input type="radio" name="syokuji[1]" value="中華">中華 <input type="radio" name="syokuji[1]" value="洋食">洋食 <input type="radio" name="syokuji[2]" value="和食">和食 <input type="radio" name="syokuji[2]" value="中華">中華 <input type="radio" name="syokuji[2]" value="洋食">洋食 というようにすればPHP側で配列でうけられますよね

harutomo777
質問者

お礼

ご回答ありがとうございます。 質問するポイントがどうやってPOSTから取り出すかの方だったのに ヘンな質問をしてしましました。 すいませんでした。

関連するQ&A

  • ラジオボタン選択で「複数ラジオボタン」をアクティブにするには?

    ■下記サンプルソースのラジオボタンの「はい」を選択すると複数のラジオボタンがアクティブになるJavaScriptがわからず困っております。教えて頂けないでしょうか。 (ページ開いた際は「いいえ checked」で複数ラジオボタンはグレーで選択無効) 用途はアンケートフォームです。 可能であればシンプルなソースで「最新のWinIE、MacSafari」に対応していると非常に助かります。先輩方よろしくお願いします。 <form name="form2" method="post" action=""> <table> <tr> <td>■「はい」を選択すると、ラジオボタン(カテゴリー1~4)がアクティブになる。 </td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">はい <input name="radiobutton" type="radio" value="radiobutton" checked>いいえ </td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">カテゴリー1 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー2 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー3 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー4 </td> </tr> </table> </form>

  • ラジオボタンをループすることができない。。。

    こんにちは。 PHPとMySQLを使って四択クイズのプログラムを作成しているのですが、どうもうまくいきません。 助言よろしくお願いします。 四択クイズのイメージとしては以下のとおりです。 問題1:パンはパンでも食べられないパンは? ○クリームパン ○食パン ○フライパン ○チーズパン [送信ボタン] ※選択肢の前の○はラジオボタンです。 一つのページに複数の問題を載せたいので、 上記の[送信ボタン]をのぞいた部分をループ処理したいと思っています。 問題文と選択肢は実行するファイルとは別のファイル、「mondai.sql」に記述してデータベースに読み込んでいます。↓ drop table form2; create table form2(id mediumint not null auto_increment, mondai varchar(500), sentaku1 varchar(100),sentaku2 varchar(100),sentaku3 varchar(100), sentaku4 varchar(100),primary key(id)); insert into form2 values('1', 'パンはパンでも食べられないパンは?', 'クリームパン', '食パン', 'フライパン', 'チーズパン'); そして実行するファイルの「form2.php」を下のように記述してみたのですが・・・ ・ ・ ・ //----------------------------------------- //サーバに接続 //----------------------------------------- $my_Con = mysql_connect("localhost","root","vertrigo"); if($my_Con == false){ die("MYSQLの接続に失敗しました。"); } //----------------------------------------- //データベースに接続 //----------------------------------------- if(!mysql_select_db("kihon",$my_Con)){ die("データベースの選択に失敗しました。"); } //----------------------------------------- //テーブルからデータを読む //----------------------------------------- $my_Row = mysql_query("select * from form2",$my_Con); if(!$my_Con){ die(mysql_error()); } while($row = mysql_fetch_array($my_Row)){ echo $row["id"]; echo "<br>"; echo $row["mondai"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=1> <?php echo $row["sentaku1"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=2> <?php echo $row["sentaku2"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=3> <?php echo $row["sentaku3"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=4> <?php echo $row["sentaku4"]; echo "<br>"; } このままだとラジオボタンのnameが同じになってしまって全ての問題の選択肢から一つしか選べなくなってしまいました。 かといってnameをfor文でループさせることもできませんでした。 このプログラムにどのようにしてループを組み込めばいいかまったくわかりません。 長い質問で申し訳ないのですが、どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数のラジオボタン選択肢によりsubmitを押せなくする

    初めて質問させていただきます。 ラジオボタンが下記の選択状態の時だけ「送信(submit)」ボタンを enable で表示させたいです。 1:● 2:○ 1:● 2:○ それ以外の選択肢では「送信(submit)」ボタンを disabl で押せないようにしたいです。 調べて、近い動作にはなりましたが、javascriptに関して 殆ど知識がないため、これから先がさっぱりわかりません。 ぜひ教えを乞いたく参りました。お知恵をお貸しください<(__)> どうぞ宜しくお願い致します。 <HTML> <HEAD> <script type="text/javascript"><!-- function unlock1(el){el.form.send.disabled=false;} function unlock2(el){el.form.send.disabled=true;} //--> </script> <form> 1:<input type="radio" name="radio1" value="1" onClick="unlock1(this)"> 2:<input type="radio" name="radio1" value="2" onClick="unlock2(this)"><br> 1:<input type="radio" name="radio2" value="1" onClick="unlock1(this)"><br> 2:<input type="radio" name="radio2" value="2" onClick="unlock2(this)"><br> <input name="send" type="submit" value="送信" disabled > </form> </BODY> </HTML>

  • javascriptからラジオボタンへのアクセス

    cakephpで以下のソースを書き、ラジオボタンタグを出力しました。 $form->create('name' => 'form') $form->radio('TestModel.field',array('指定なし', '無', '有'), 'value' => 0)); $form->end(); ----出力されたHTML(formタグなどは省略しています)------ <input type="radio" name="data[TestModel][field]" id="TestModelField0" value="0" checked="checked" > <label for="TestModelField0">指定なし</label> <input type="radio" name="data[TestModel][field]" id="TestModelField1" value="1" > <label for="TestModelField1">無</label> <input type="radio" name="data[TestModel][field]" id="TestModelField2" value="2" > <label for="TestModelField2">有</label> -------------------------------- [リセット]ボタンのようなのを押した時に、'指定なし'の初期値を選択するようにしたいので、 javascriptでしようとしているのですが、 name属性が"data[TestModel][field]"のためか、 document.form.data[ModelTest][field].value = 0とするとエラーになってしまいます。 (TestModelは宣言されていません。というエラー) ラジオボタンのグループは複数あります。 ラジオボタンにアクセスするにはどうしたらよいでしょうか。

  • ラジオボタンの値を・・・・・

    <html> <head> <script language="javascript"> function osu(){ document.form1.text1.value=document.form1.radio1.value; } </script> </head> <body> <form name="form1"> <input type="radio" name="radio1" value="男" checked>男 <input type="radio" name="radio1" value="女">女 <input type="button" value="押す" onClick="osu()"> <input type="text" name="text1"> </form> </body> </html> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 上記のプログラムは、選択されたラジオボタンの値をテキストボックスに表示させるプログラムなんですが、何故かラジオボタンの値が表示されず、「undefined」というのが表示されます。 どうすれば、「男」または「女」という値を表示させることができますか? ちなみにこれは、「○○○.html」で保存します

  • ラジオボタンについて

    つまらない質問ですがどうか教えてください。 <form name="myform"> ・ ・ ・ <INPUT TYPE="RADIO" NAME="R1" VALUE="1">関連あり</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="2">関連なし</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="3">不明</INPUT> </form> 上記のようなラジオボタンを作ったのですが、 このラジオボタンのチェックされた値を取得するには document.myForm.cGyoumu.value ではできないのでしょうか? LOOPさせながらdocument.myForm.elements(i).checked で探さないと取得できないのでしょうか? 同じフォーム内にラジオボタンが複数あるため、 この方法はあまりやりたくありません。 ほかに方法がありましたら、どうか教えてください。

  • javascript radioボタンの制御

    お世話になります。 javascript初心者です。 下記のようなケース input のnamaが異なる場合において radioボタンを使用してどちらかを選択させたいのですが 通常のhtmlだと両方に選択が入ってしまうので困っております。 javascriptでひとつだけを選択させることが可能と聞きましたが、 どのようにしたらよいか見当がつかなかったため質問させていただきました。 どうぞよろしくお願いいたします。 <html> <body> <form> <input type="radio" name="flgMale" value="1">男 <input type="radio" name="flgFemale" value="1">女 </form> </body> </html>

  • 複数のラジオボタンのチェック

    複数のラジオボタンが全て選択されているかどうかのチェックのJavaScriptをすっきりした形で書くのは、どうしたらいいでしょうか? 下記のようですと、ダラダラと記述するようになってしまいます。 どなたかご教授ください。 --------------------------------------- <script type="text/javascript"> function insert_onClick() { j=0; for (i=0 ;i < document.F1.a11.length ; i++){ if (document.F1.a11[i].checked) { j=1; } } } </script> <form action="check.php" name="F1" onsubmit="return insert_onClick()"> 各valueは0~4まであります <input type="radio" name="a11" value="0"> <input type="radio" name="a12" value="0"> <input type="radio" name="a21" value="0"> <input type="radio" name="a22" value="0"> <input type="radio" name="b11" value="0"> <input type="radio" name="b12" value="0"> <input type="radio" name="b21" value="0"> <input type="radio" name="b22" value="0"> ---------------------------------------

  • 選択したたラジオボタンの値をSUBMITボタンに

    選択したたラジオボタンの値をSUBMITボタンの名前として自動的に替えたいのですが、助言をいただけますか。 イメージは下記です。★の部分に、クリックごとにradioの値を入れたいのです。 <script Language="JavaScript"><!-- function set() { n = document.myFORM.Radio.value; } // --> </script> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onclick="set()" CHECKED> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★"></form>

  • JSP + ラジオボタン

    JSP+Servlet+Beanで作ってます。 JBuilder5を使ってます。 JSPはラジオボタン、テキスト、ボタン等があります。 <INPUT TYPE = "radio" NAME = "r1" VALUE = "ins">A <INPUT TYPE = "radio" NAME = "r1" VALUE = "upd">B <INPUT TYPE = "radio" NAME = "r1" VALUE = "del">C としています。 たとえば、Bを選択時、ボタンクリックで Servletにリクエストを送信しますが、 Servletから再びJSPを呼び出し、画面を 表示するとき、ラジオボタンはBを選択 させたいのですが、どうしたらいいですか? FormタグのCHECKEDというオプションを どのように使えばいいのか教えていただきたいのですが。 テキストには、Beanでsetメソッド、 JSPでは、<jsp:getProperty・・・>を使って セットできているんですが、ラジオボタンも 同様ですか? @@@・・・JSPのタグを勉強しないといけないです。 @@@勉強不足です。

    • ベストアンサー
    • Java