多个项目单选按钮组


Multiple Items RadioButtons Groups

有一个表单,其中包含在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',
    .....
)