- 締切済み
PHP+MySQLで複数のラジオボタンから値を取得
初めまして。もしお力を貸していただけるならと思い質問させていただきます。 今、MySQLに登録したデータを修正できるようにするファイルを作成しておりまして、 IDを指定すれば、ラジオボタンに登録されているデータがcheckedされるようにしたいと 考えています。 【MySQL】 [hoge] id hogeA 0or1 hogeB 0or1 hogeC 0or1 【update.php】 <?php require ("../dbconnect.php"); $_REQUEST["id"] = 選択したIDの受け渡し; $id = $_REQUEST["id"]; $sql = sprintf ("SELECT * FROM hoge WHERE id=%d", mysql_real_escape_string ($id) ); $recordSet = mysql_query ($sql) or die (mysql_error()); $data = mysql_fetch_assoc ($recordSet); $checkedOK = null; $checkedNG = null; switch($data["hogeA"]){ case 0: $checkedOK = 'checked'; break; case 1: $checkedNG = 'checked'; } ?> <html> <head> <form method="post" id="updateForm" action="update.php" enctype="multipart/form-data"> <table> <tr> <th>hogeA</th> <td><label> <input type="radio" name="hogeA" id="hogeA01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeA" id="hogeA02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeB</th> <td><label> <input type="radio" name="hogeB" id="hogeB01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeB" id="hogeB02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeC</th> <td><label> <input type="radio" name="hogeC" id="hogeC01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeC" id="hogeC02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> </head> </html> とした場合、当然ですがhogeA,hogeB,hogeCには同じ値が入ってしまいます。 hogeB,hogeCも同じ様にSWITCH文を書けば実装できると思うのですが、 foreach等を使って複数のラジオボタンを取得するいい方法があれば、 教えていただきたいです。 説明が不十分で申し訳ありません。もし快くお答えいただける方がいれば大変嬉しく思います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
こんな風にnameとvalueをつかった配列を用意すればいいでしょう <?PHP error_reporting(E_ALL); $checked=array( "hogeA"=>array(0=>" checked",1=>"") ,"hogeB"=>array(0=>"",1=>" checked") ,"hogeC"=>array(0=>" checked",1=>"") ); ?> <input type="radio" name="hogeA" id="hogeA01" class="style02" value="0" <?php echo$checked["hogeA"][0]; ?>><label for="hogeA01">OK</label> <input type="radio" name="hogeA" id="hogeA02" class="style02" value="1" <?php echo$checked["hogeA"][1]; ?>><label for="hogeA02">NG</label><br> <input type="radio" name="hogeB" id="hogeB01" class="style02" value="0" <?php echo$checked["hogeB"][0]; ?>><label for="hogeB01">OK</label> <input type="radio" name="hogeB" id="hogeB02" class="style02" value="1" <?php echo$checked["hogeB"][1]; ?>><label for="hogeB02">NG</label><br> <input type="radio" name="hogeC" id="hogeC01" class="style02" value="0" <?php echo$checked["hogeC"][0]; ?>><label for="hogeC01">OK</label> <input type="radio" name="hogeC" id="hogeC02" class="style02" value="1" <?php echo$checked["hogeC"][1]; ?>><label for="hogeC02">NG</label><br>
補足
早急なお返事ありがとうございます。 今試させていただきましたが上手く実装できませんでした。 hogeA,hogeB,hogeCは別々の<tr></tr>なので、 $checked=array( "hogeA"=>array(0=>" checked",1=>"") ,"hogeB"=>array(0=>"",1=>" checked") ,"hogeC"=>array(0=>" checked",1=>"") ); の部分が上手く動作できてないようです。 追加でご指示いただけましたら、よろしくお願いいたします。