【问题标题】:Getting values of radio buttons generated in for loop获取for循环中生成的单选按钮的值
【发布时间】:2015-01-08 01:40:48
【问题描述】:

我目前在 codeigniter 框架上运行并遇到了一些麻烦。我正在从数据库中检索问题列表和他们可能的答案列表(类似于问卷),并将其加载给参与者进行尝试。

由于我正在使用 for 循环,我无法更改个别问题的名称或 id 值。我通过将 questionID 附加到名称/id 来克服这个问题。

当我将它发布到我的控制器时,问题就来了。当我需要将结果插入数据库时​​如何区分它?

 <?php foreach($dbresult->result() as $row) {?>

            <p><?php echo $row->Question ;?></p>
            <?php if ($row->QuestionType == "MCQ"){ ?>

            <ul>
                <li><b>A: </b><?php echo $row->SelectionA; ?></li>
                <li><b>B: </b><?php echo $row->SelectionB; ?></li>
                <li><b>C: </b><?php echo $row->SelectionC; ?></li>
                <li><b>D: </b><?php echo $row->SelectionD; ?></li>
            </ul>

           Select one of the following options:<br>
            <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" required value="A">A<br>
            <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" value="B">B<br>
            <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" value="C">C<br>
            <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" value="D">D<br>
            <?php } elseif($row->QuestionType== "truefalse") {?>

           Select one of the following options:<br>
                <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" value="true">True<br>
                <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" value="false">False<br>
            <?php } else {?>
                <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" value="ok">OK<br>
                <input type="radio" name="<?php echo $row->QuestionID;?>.Ans" value="agree">Agree<br>
            <?php }?>
<?php } ?>

以上是我打印问卷的方式,有什么可能的解决方案吗?

【问题讨论】:

    标签: php forms codeigniter


    【解决方案1】:

    拥有这样的名称属性很难管理。

    使用分组名称属性:

    name="answers[<?php echo $row->QuestionID;?>]"
    

    简单示例:

    <?php foreach($dbresult->result() as $row) {?>
        <p><?php echo $row->Question ;?></p>
    
        <?php if ($row->QuestionType == "MCQ"){ ?>
    
            <ul>
                <li><b>A: </b><?php echo $row->SelectionA; ?></li>
                <li><b>B: </b><?php echo $row->SelectionB; ?></li>
                <li><b>C: </b><?php echo $row->SelectionC; ?></li>
                <li><b>D: </b><?php echo $row->SelectionD; ?></li>
            </ul>
    
           Select one of the following options:<br>
            <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" required value="A">A<br>
            <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" value="B">B<br>
            <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" value="C">C<br>
            <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" value="D">D<br>
    
        <?php } elseif($row->QuestionType== "truefalse") {?>
    
           Select one of the following options:<br>
                <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" value="true">True<br>
                <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" value="false">False<br>
    
        <?php } else {?>
    
            <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" value="ok">OK<br>
            <input type="radio" name="answers[<?php echo $row->QuestionID;?>]" value="agree">Agree<br>
    
        <?php }?>
    <?php } ?>
    

    所以在 PHP 中,你可以直接用它的名字来称呼它:

    public function controller_name()
    {
        $answers = $this->input->post('answers');
        foreach($answers as $question_id => $answer) {
    
        }
    }
    

    【讨论】:

    • 谢谢!设法根据您的建议解决了一些问题并成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2017-09-05
    • 2014-08-29
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多