【问题标题】:Radio Button in a php loop not workingphp循环中的单选按钮不起作用
【发布时间】:2016-02-24 20:25:32
【问题描述】:

我正在尝试处理从表单中捕获的信息,但它不起作用。我没有从表单中获得任何信息。

我有以下表单代码:

<form class="customform" action="" method="post">

    <table class="table table-bordered table-striped">

        <tbody>

            <?php foreach($question_row->results() as $test)  { ?>
                <tr>
                    <td><?php echo $test->question?></td>
            <td width="30%">
                <input type="radio" name="question[<?php echo $test->id ?>]" value="<?php echo $test->categoryId?>"> Yes
                <input type="radio" name="question[<?php echo $test->id?>]" value="0"> No
            </td>
            </tr>

      <?php   } ?>

        </tbody>
    </table>
    <input type="hidden" name="token" value="<?php echo Token::generate()?>">
    <div class="s-4"><button type="submit">Submit</button></div>


</form>

以下是我处理表单的方式:

<?php

require_once 'core/init.php';

$question = new Question();

$question_row = DB::getInstance()->query("SELECT * FROM questions");


if(Input::exists()) {
if (Token::check(Input::get('token'))) {

    $user = new User();

   try{
         $_SESSION['food'] = Input::get('question[1]');
         Redirect::to('test');

     }catch (Exception $e)
     {
         die($e->getMessage());
     }

}
}

我用 firebug 检查了表单输出,一切都正确。现在,当我尝试处理单击提交按钮的表单时,我没有收到错误,来自Input::get('question[1]') 的信息没有传递给会话变量。我将Input::get('token') 分配给会话变量并且它起作用了。我在这条线上做错了吗:

<td width="30%">
                <input type="radio" name="question[<?php echo $test->id ?>]" value="<?php echo $test->categoryId?>"> Yes
                <input type="radio" name="question[<?php echo $test->id?>]" value="0"> No
            </td>

我已经看了好几个小时了

【问题讨论】:

标签: php loops radio-button


【解决方案1】:

您正在创建具有索引的元素数组,并且正在检查具有静态索引值的 post 变量。最好创建简单的元素数组,例如

<input type="radio" name="question<?php echo $test->id ?>" value="<?php echo $test->categoryId?>"> Yes
<input type="radio" name="question<?php echo $test->id?>" value="0"> No

并使用 isset 条件验证 post 值,例如

isset($_POST["question".$test->id])?"":"";

【讨论】:

  • 我不能用数组来做这件事有什么原因吗?我检查静态索引值的原因是因为我知道索引存在
  • 基本上我想说单选按钮仅在选择时才传递发布数据,这就是为什么您不需要创建元素的索引数组的原因。您需要检查已选择问题的所有值。所以需要检查所有问题。希望对你有帮助。
猜你喜欢
  • 2014-04-29
  • 2013-06-22
  • 2018-12-31
  • 1970-01-01
  • 2016-09-27
  • 2018-01-14
  • 2018-02-25
  • 2014-05-22
  • 2012-12-29
相关资源
最近更新 更多