• 締切済み

MySQLから取ってきた配列のデータを利用するには

MySQLから取ってきた配列のデータをラジオボタンのフォームに入れて、別のPHPファイルでチェックを確認したいのですが、うまくいきません。 下記のソースが実際のものになります。radi_".$cnt." の値をどうやって取得するのでしょうか?$answer = $_POST("radi_1");では動いてくれませんでした。 どうぞよろしくお願い致します。 $choices['a'] = "<INPUT type=radio name=radi_".$cnt." value=a>".$row['choices_a']."<BR>";

みんなの回答

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

ラジオボタンにデータを落とし込むならnameを統一して valueでデータをきりわけてください

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シャッフルしたデータを正確に引き継ぎたい

    試験問題のプログラムを作っています。 MySQLに格納されている問題文と選択肢をシャッフルして表示し、ユーザーからは見えない選択肢aを選ぶと正解で得点が1カウントされるものです。 問題用紙のページではきちんと問題と選択肢が表示されるのですが、セッションを使い採点のページに進むとMySQLに入っている問題文と選択肢が大量に表示されてしまいました。 ユーザーが採点のページに進むとどの問題を間違えたのか確認できるように問題用紙のページと同じように表示させたいのですが、これはどのようにコードを書けばよいのでしょうか? どうぞよろしくお願い致します。 //問題用紙のページ <?php session_start(); ?> <form method="post" action="grading.php"> <?php $arr = array(); while ($row = mysqli_fetch_array($result)){ $arr[] = $row; } shuffle($arr); $cnt = 0; foreach($arr as $row){ if($cnt >= 3){break;} print $row['question']; print "<BR>"; $choices = array(); $choices['a'] = "<INPUT type=radio name=radi_".$cnt." value=a>".$row['choices_a']."<BR>"; $choices['b'] = "<INPUT type=radio name=radi_".$cnt." value=b>".$row['choices_b']."<BR>"; shuffle($choices); foreach($choices as $val){ print $val; } session_register('sesdata_q'); session_register('sesdata_a'); session_register('sesdata_b'); $_SESSION['sesdata_q'][] = $row['question']; $_SESSION['sesdata_a'][] = $row['choices_a']; $_SESSION['sesdata_b'][] = $row['choices_b']; print "<BR>"; $cnt++; } ?> <INPUT type="submit" value=" 採点 " name="grading"> //採点のページ <?php session_start(); $score = 0; $answer = $_POST['radi_0']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_1']; if($answer == 'a'){ $score++; }print "3問中" . $score . "問正解"; print "<br>"; foreach($_SESSION['sesdata_q'] as $val){ print $val."<BR><BR>"; } foreach($_SESSION['sesdata_a'] as $val){ print $val."<BR><BR>"; } foreach($_SESSION['sesdata_b'] as $val){ print $val."<BR><BR>"; } ?>

    • ベストアンサー
    • PHP
  • シャッフルした変数を正しく表示するには?

    多肢選択式試験問題のプログラムを作っています。 MySQLに格納されている各問題と選択肢をシャッフルして出題し、セッションを使って採点ページに進むと出題された問題と選択肢を表示させたいのです。 しかし下記のソースだと問題と選択肢が1題分しか表示されず、選択肢も出題ページに表示された順番には並んでくれません。 これはどうしたらいいのでしょうか?よろしくお願い致します。 //出題のページ ※選択肢Aを選ぶと正解になります。 <?php session_start(); ?> $arr = array(); while ($row = mysqli_fetch_array($result)){ $arr[] = $row; } shuffle($arr); $cnt = 0; foreach($arr as $row){ if($cnt >= 2){break;} print $row['question']; print "<BR>"; $choices = array(); $choices['a'] = "<INPUT type=radio name=radi_".$cnt." value=a>".$row['choices_a']."<BR>"; $choices['b'] = "<INPUT type=radio name=radi_".$cnt." value=b>".$row['choices_b']."<BR>"; $choices['c'] = "<INPUT type=radio name=radi_".$cnt." value=c>".$row['choices_c']."<BR>"; $choices['d'] = "<INPUT type=radio name=radi_".$cnt." value=d>".$row['choices_d']."<BR>"; session_register(sesdata_q); session_register(sesdata_a); session_register(sesdata_b); session_register(sesdata_c); session_register(sesdata_d); $_SESSION[sesdata_q] = $row['question']; $_SESSION[sesdata_a] = $row['choices_a']; $_SESSION[sesdata_b] = $row['choices_b']; $_SESSION[sesdata_c] = $row['choices_c']; $_SESSION[sesdata_d] = $row['choices_d']; shuffle($choices); foreach($choices as $val){ print $val; } print "<BR>"; $cnt++; } ?> //採点のページ <?php $score = 0; $answer = $_POST['radi_0']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_1']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_2']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_3']; if($answer == 'a'){ $score++; } print "2問中" . $score . "問正解"; print "<br>"; print "<br>"; print $_SESSION[sesdata_q]; print "<br>"; print $_SESSION[sesdata_a]; print "<br>"; print $_SESSION[sesdata_b]; print "<br>"; print $_SESSION[sesdata_c]; print "<br>"; print $_SESSION[sesdata_d]; ?>

    • 締切済み
    • PHP
  • mysqlの結果セットを配列に

    while($row=mysql_fetch_array($res)){ echo "<form action=kousin.php method=post>"; echo "<TD bgcolor=#FFFFFF><input type='text' name=zaiko[] value=". $row["注文"] . "></td>"; echo "<input type=hidden name=store1 value=". $row["注文"] .">"; --------------------------------------------------- $zaiko[]=$_POST["zaiko[]"]; 上記のようなイメージでフォームから送った結果セットを配列として格納したいのですが、どのようにしたら良いのでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでmysqlに接続してデータを登録

    入力フォームをhtmlに作って それをidとpassを入力して それをmysqlに登録したいのですが うまくできません <html> <head> <meta http-equiv="Content-Type"content="text/html;charset="utf-8"/> <title>登録</title> </head> <body> <form action="touroku.php"method="post"> 登録id :<br /> <input type="text"name="id"size="10"value="" /><br /> パス:<br /> <input type="text"name="pass"size="10"value="" /><br /> <br /> <input type="submit"value="登録する" /> </form> </body> </html> という感じに 入力フォームは作ったのですが それからそれをmysqlにどうやって登録をするのかわかりません 詳しく解説されてわかりやすいサイトなどを教えてください もしくは教えてください

  • phpがうまく動きません。

    phpで4択のクイズを作りたいのですが 正解のラジオボタンを選んでもカウントされないのと 答え合わせを押すと正解だった箇所を赤く表示したいのですがなんて書けばよいのか どこにそのコードを入れるのかよくわかりません <状態> ・5つのデータがmyadminに保存されています ・データベースの内容は表示されます。 ・答え合わせを押すと正解のラジオボタンを選んだ数が表示されるようにしたいです ・保存ボタンは閉じても答えを保存するためにあります ・q_noは8ケタ固定であり、左から5つ目までは固定であと3桁は999問入れられるよう設定してあります ・q_ansはデータベースに答えの値(1~4)が入れてあります ・データベース名はproblemです <省略> $res_set = mysql_query($sql); while ($row=mysql_fetch_array($res_set)){ ?> <form method="POST" action="H2102.php"> <?php echo $row['q_no'] . " "; ?> <br> <?php echo $row['q_text'] . " "; ?><br><br> <br> <?php echo "ア"; ?> <input type="radio" name="q_ans" value="1"> <?php echo $row['q_point1'] . " "; ?> <br><br><br> <?php echo "イ"; ?> <input type="radio" name="q_ans" value="2"> <?php echo $row['q_point2'] . " "; ?> <br> <br><br> <?php echo "ウ"; ?> <input type="radio" name="q_ans" value="3"> <?php echo $row['q_point3'] . " "; ?> <br><br><br> <?php echo "エ"; ?> <input type="radio" name="q_ans" value="4"> <?php echo $row['q_point4'] . " "; ?> <br><br><br> <br> <input type = "submit" name="save" value="保存"> <?php if(isset($_POST['save'])){ $_SESSION['save'] = $_POST['q_ans']; //保存すると選んだ回答を保存 } ?> <?php } ?> </form> <form method="POST" action="H2102.php"> <input type = "submit" name="ans" value="答え合わせ"> <?php //正解かどうかをチェック if(isset($_POST['ans'])){ $a = $_SESSION['a']; if($row['q_no'] == $_POST['q_no'] && $_POST['q_ans'] || $_SESSION['save'] == $row['q_ans'] ){ $_SESSION['a'] = $a + 1; //q_noが一致かつ保存した値または選んだ解答(値)が一致していれば1問につき1つカウントする $a = $_SESSION['a']; } echo $a; //カウントされているかをチェック } ?> <input type = "submit" name="del" value="カウント初期化"> <?php if(isset($_POST['del'])){ session_unset(); } ?> </form> <br> <?php } ?> 足りない情報があれば追記します

    • 締切済み
    • PHP
  • MySqlに登録したデータを更新すると文字化けする

    PHP5.2 MySql5.1.34 文字コードSJIS MySqlに登録したデータを更新すると文字化けします。 回答をよろしくお願い致します。 // MySQLのクライアントの文字コードをsjisに設定 mysql_query("SET NAMES 'sjis'") or die("can not SET NAMES sjis"); // データを取り出す $sql = "SELECT created_at, mes, url FROM message WHERE (id = ".$_POST["id"].");"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); // 取り出したデータを表示する print "<form action=koushin.php method=post accept-charset=\"Shift_JIS\">"; print "日付:<input type=text size=30 name=created_at value=" . $row["created_at"] . "> "; print("<br>"); print("<br>"); print "メッセージ:<input type=text size=50 name=mes value=" . $row["mes"] . "> "; print("<br>"); print("<br>"); print "URL:<input type=text size=80 name=url value=" . $row["url"] . "> "; print "<input type=hidden name=id value=" .$_POST["id"]. ">"; print("<br>"); print("<br>"); print "<input type=submit value=更新>"; print("<br>"); print("<br>"); print "</form>"; koushin.php <?php $sv = "サーバ"; $dbname = "データベース"; $user = "ユーザー"; $pass = "パスワード"; $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); $id = $_POST["id"]; $created_at = $_POST["created_at"]; $mes = $_POST["mes"]; $url = $_POST["url"]; $sql = "UPDATE message SET updated_at = now() , created_at = '{$created_at}' , mes = '{$mes}' , url = '{$url}' WHERE id = $id"; $res = mysql_query($sql, $conn) or die("更新エラー"); mysql_close($conn); ?>

    • ベストアンサー
    • MySQL
  • mysql データ登録

    phpにてmysqlにデータ登録の流れを作っているのですが、わからないことがあり投稿しました。 簡単に流れを説明しますと mysqlのテーブル(テーブル名member)の構成は id | name だとして phpのフォームで <input type="text" name="name1" value=""> <input type="text" name="name2" value=""> <input type="text" name="name3" value=""> というものを作っています。 ここでフォームのname1、name2、name3をそれぞれ入力したときにmysqlに登録されるのですが、 mysqlのなかに id | name 1 | A 2 | B 3 | C としたいのですが、下記の記述ではできません。 (INSERT INTO `member` SET `name`='$name1',`name`='$name2',`name`='$name3') エラー文はColumn 'name' specified twiceと表示されます。 レコード数は増やしたくないので、何か方法が御座いましたら教えていただけないでしょうか? まだ、PHPを勉強し始めたばかりで困っています。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでMySQLのレコードを削除したい

    現在「基礎からのMYSQL」という本でXAMPPを導入しMySQL,PHPの基礎を勉強中です。 (mysql_query() を初めて学習中です。) 例にならってスクリプトを書いてみたのですが、MySQL内にあるレコードを削除するためのスクリプトがうまく作動しません。 (SELECT, INSERT, SEARCH は正常に作動します。DELETEだけがなぜかうまくいきません。) ApacheとMySQLは起動しています。 考えられる原因をおしえていただけませんでしょうか。よろしくおねがいいたします。 ソースコードは下記のとおりです。 ★HTML(トップページ) //メッセージ表示のスクリプトを呼び出すフォーム <form method="post" action="kantan_select.php"> メッセージを表示します<br> <input type="submit" value="メッセージ表示"> </form> //挿入のスクリプトを呼び出すフォーム <form method="post" action="kantan_insert.php"> 名前を入力してください<input type="text" name="a1"><br> メッセージを入力してください<input type="text" name="a2" size=150><br> <input type="submit" value="送信"> </form> //☆☆☆削除のスクリプトを呼び出すフォーム☆☆☆ <form mothod="post" action="kantan_delete.php"> 削除番号<input type="text" name="b1"><br> <input type="submit" value="削除番号送信"> </form> //検索のスクリプトを呼び出すフォーム <form method="post" action="kantan_search.php"> 検索キーワード<input type="text" name="c1"><br> <input type="submit" value="検索開始"> </form> ★レコード削除のPHPスクリプト <?php $s=mysql_connect("localhost","root","パスワード") or die("接続失敗"); print "接続しました<br>"; mysql_select_db("db1"); $b1_d=$_POST["b1"]; mysql_query("delete from tbk where bang=$b1_d") ; $re=mysql_query("select * from tbk order by bang"); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; print ":"; print $kekka[1]; print ":"; print $kekka[2]; print "<br>"; } mysql_close($s); print "<br><a href='kantan.html'>メニューに戻る</a>" ?> <環境> Windows 7 XAMPP導入するための付属CD-ROMの内容  ・Apache(HTTPD2.2.6 + Openssl0.9.8e)   ・MySQL(5.0.45)  ・PHP(5.2.4)  ・PHP(4.4.7)  ・phpMyAdmin(2.11.1)  ・Zend Optimizer

    • 締切済み
    • PHP
  • データ検索のエラーについて

    http://oshiete1.goo.ne.jp/qa3583661.htmlの質問の続きなのですが、条件分岐による検索のプログラムを書きたいのですが、 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\iiko.php on line 61 というエラーが起こってしまいました。 いろいろとPHPのサイトを見て回って考えたのですが、解決策がわかりません。 フォームの構造は <html> <head> <title>abcde</title> </head> <body> <FONT size="4">abcde</FONT> <form action="iiko.php" method="post"> a<br> <br> ある<INPUT type="radio" name="a" value="ある"><br> ない<INPUT type="radio" name="a" value="ない"><br> <br> b<br> <br> ある<INPUT type="radio" name="b" value="ある"><br> 少しある<INPUT type="radio" name="b" value="すこしある"><br> ない<INPUT type="radio" name="b" value="ない"><br> <br> c<BR> ある<INPUT type="radio" name="c" value="ある"><BR> ない<INPUT type="radio" name="c" value="ない"><BR> <BR> d<br> ある<INPUT type="radio" name="d" value="ある"><br> ない<INPUT type="radio" name="d" value="ない"><br> <br> e<br> ある<INPUT type="radio" name="e" value="ある"><br> ない<INPUT type="radio" name="e" value="ない"><br> <br> <input type="submit" name="bottun1" value="送信"> </form> </body> </html> 検索リストのiiko.phpは、条件を選択すれば、デーブルのデータのID2~4番の人を表示させ様としています。 <html> <body> <?php $a_1 = $_POST["a"]; $b_1 = $_POST["b"]; $c_1 = $_POST["c"]; $d_1 = $_POST["d"]; $e_1 = $_POST["e"]; require_once("DB.php"); $dbUser = "sample"; $dbPass = "password"; $dbHost = "localhost"; $dbName = "sampledb"; $dbType = "mysql"; $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; $conn = DB::connect($dsn); //接続にしっぱいしたらメッセージを表示して終了します。 if (DB::isError($conn)) { die($conn->getMessage()); } $sql = <<<EOS SELECT * FROM member if($a_1 == "ある"and $b_1 == "ある"and $c_1 == "ない"and $d_1 == "ある" $e_1== "ある") { $sql = $sql . " WHERE id BETWEEN 2 AND 4;"; } $result = $conn->query($sql); if (DB::isError($result)) { die($result->getMessage()); } $count = $result->numRows(); print "検索結果は".$count."件です。<BR>"; if($count>0){ ?> <TABLE width="450" border="1" cellspacing="0" cellpadding="8"> <TBODY> <TR><TH>番号</TH><TH>氏</TH><TH>名</TH><TH>年齢</TH></TR> <?php while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)) { ?> <TR><TD align="center"><?=$rs['id']?></TD> <TD><?=$rs['last_name']?></TD> <TD><?=$rs['first_name']?></TD> <TD align="center"><?=$rs['age']?></TD></TR> <?php } ?> </TBODY></TABLE> <?php } $result->free(); $conn->disconnect(); ?> </body> </html> です。 解決策を教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで配列をPOSTデータで送った場合の取り出し方を教えてください。

    PHPで配列をPOSTデータで送った場合の取り出し方を教えてください。 知恵袋でも質問したのですか、使い方をよくわかっておらず、補足が追加出来なくって、回答者の方に返事が出来なくなってしまいました。申し訳ありません。 プログラム初心者です。始めたばかりで、自分で考えて知っている範囲で組もうとしているのですが、 例えば <form method="POST" action="○○○"> <input type="checkbox" name="color[]" value="赤" />赤<br /> <input type="checkbox" name="color[]" value="青" />青<br /> <input type="checkbox" name="color[]" value="緑" />緑<br /> <input type="submit" value="送信" /> とこのように書いてすべてにチェックを付けて送った配列のデータはどのように取り出したら良いのでしょうか? foreachで下記のように、 $x = $_POST['color']; foreach( $x as $value ){ echo "色 = ". $value."<br />\n"; } exit; $_POST['color']の配列を取り出そうすると Invalid argument supplied for foreach() と表示されてしまいます。 var_dumpで配列を表示させると、 string(3) "Array" と表示され確かに配列として届いていると思います。 確かにチェックはいれて送信もしています。 print "{$_POST['color']}"で表示してみると、"A"と"r"と"r"でした。 チェックボックスを10個に増やして、それぞれ$_POST['color'][0]~[9]まで 表示させてみたところ、はじめの5個はArrayも文字がいつつ表示され、残りは空白でした。 知恵袋のほうで、取り出し方が間違っているとの指摘をいただきましたが、どのように取り出したら良いのでしょうか。 どなたかお手数ですが、教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP