有一个表单,其中包含在PHP中动态创建的项目列表,每个项目都有自己的id(我指的是数据库id,而不是元素的id)
每个项目都有两个单选按钮(好、坏)
有没有一种方法可以在PHP中获得一个所有坏项和所有好项的数组,就好像我使用的复选框的名称为Good[]和Bad[],每个项的值为"id"一样。
有没有办法用单选按钮做这个?
<form action="some.php" method="post">
item 1: <br/>
<input type="radio"/>Leave<br/>
<input type="radio"/>Delete<br/>
item 2: <br/>
<input type="radio"/>Leave<br/>
<input type="radio"/>Delete<br/>
</form>
不,你不能像使用复选框那样做。
相反,您需要接受无线电组的所有name=",并在它们之间循环,在接受表单后用PHP构建自己的数组。
<form>
<input type="radio" name="question1" value="good" /> Good<br />
<input type="radio" name="question1" value="bad" /> bad
<input type="radio" name="question2" value="good" /> Good<br />
<input type="radio" name="question2" value="bad" /> bad
</form>
<?php
$questions = array('question1', 'question2');
foreach($questions as $q) {
if(isset($_POST[$q])) {
switch($_POST[$q]) {
case 'good':
$good += 1;
break;
case 'bad':
$bad += 1;
break;
default:
// invalid value
}
}
}
您可以制作如下表单:
<form action="some.php" method="post">
<?php foreach ($ids as $i => $id) : ?>
item <?php echo $i+1 ?>: <br/>
<input type="radio" name="item[<?php echo $id ?>]" value="good"/>Leave<br/>
<input type="radio" name="item[<?php echo $id ?>]" value="bad"/>Delete<br/>
<?php endforeach; ?>
</form>
然后在some.php
中,$_POST['item']
会给你一个数组,如下所示:
array(
'item_id1' => 'good',
'item_id2' => 'bad',
.....
)