こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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等を使って複数のラジオボタンを取得するいい方法があれば、
教えていただきたいです。

説明が不十分で申し訳ありません。もし快くお答えいただける方がいれば大変嬉しく思います。

投稿日時 - 2012-10-26 10:14:12

QNo.7766793

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

こんな風に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>

投稿日時 - 2012-10-26 10:31:44

補足

早急なお返事ありがとうございます。

今試させていただきましたが上手く実装できませんでした。

hogeA,hogeB,hogeCは別々の<tr></tr>なので、

$checked=array(
"hogeA"=>array(0=>" checked",1=>"")
,"hogeB"=>array(0=>"",1=>" checked")
,"hogeC"=>array(0=>" checked",1=>"")
);

の部分が上手く動作できてないようです。
追加でご指示いただけましたら、よろしくお願いいたします。

投稿日時 - 2012-10-26 13:08:52

あなたにオススメの質問