【问题标题】:Setting value of radio button in Codeigniter在 Codeigniter 中设置单选按钮的值
【发布时间】:2014-05-12 02:43:34
【问题描述】:

在用于编辑详细信息的表单中,我有一个带有值 01 的单选按钮。我想要的是,当表单被加载时,即当用户点击edit 链接时,单选按钮应该设置为数据库中的值。一旦用户更改并提交表单,它应该保留提交的值。这怎么可能?

我尝试了以下代码,但没有成功。我知道不能这样。 $row->videotype 具有数据库中的值。

<input type="radio" name="trailer" value="1" <?php 
    if(set_radio('trailer', '1', TRUE)) {
        echo set_radio('trailer', '1', TRUE); 
    } else { 
        if($row->videotype==1) ?> checked=checked <?php 
    } ?> />Yes
<input type="radio" name="trailer" value="0" <?php 
    if(set_radio('trailer', '0')) {
        echo set_radio('trailer', '0');  
    } else {
        if($row->videotype==0) ?> checked=checked <?php 
    } ?> />No

在表单提交功能中(在控制器中),我已将其设置为表单验证:

$this->form_validation->set_rules('trailer', 'Trailer', 'is_numeric');  

谁能帮我解决这个问题?提前致谢。

【问题讨论】:

    标签: php codeigniter radio-button


    【解决方案1】:

    set_value 函数在编辑表单验证中很有用,试试这个方法

    <input type="radio" name="trailer" value="1" <?php 
        echo set_value('trailer', $row->videotype) == 1 ? "checked" : ""; 
    ?> />Yes
    
    <input type="radio" name="trailer" value="0" <?php 
        echo set_value('trailer', $row->videotype) == 0 ? "checked" : ""; 
    ?> />No
    

    在控制器中验证规则很好,如果发布数据有空格,也请使用修剪规则

    $this->form_validation->set_rules('trailer', 'Trailer', 'trim|is_numeric');  
    

    编辑:set_radio 函数在编辑模式表单验证中创建问题请使用set_value 函数

    【讨论】:

    • 如果 $row->videotype = 1,set_radio 怎么知道在第一个而不是第二个输出?
    • 一旦我提交表单,这不是将单选按钮设置为单击的按钮。
    • @Jenz,请检查更新答案,希望它会起作用,这也将检查表单验证中的无线电。
    • 您的解决方案不适用于 set_radio()。有什么建议吗?
    • @ankitsuthar set_value() 仅用于输入文本类型的设置值,但set_radio 函数用于预设值以及“选中/未选中”,您可以使用这种方式set_radio('field name', 'value', $checked = true/false)
    【解决方案2】:

    set_radio 是一个记录不充分的 CI 函数。你没有正确使用它。你最好不要使用它。这更简单:

    <input type="radio" name="trailer" value="1" <?php if($row->videotype==1) ?> checked=checked <?php } ?> />Yes
    <input type="radio" name="trailer" value="0" <?php if($row->videotype==0) ?> checked=checked <?php } ?> />No
    

    【讨论】:

    • 但问题是,一旦提交表单,它就不会设置为我检查过的单选按钮。
    • 如果您在检索数据之前更新了数据库。
    • 好吧,set_radio 函数不需要太多详细的文档。它接受三个参数,它们已经在文档中说明。检查我的答案,我使用 codeigniter 函数来做到这一点。
    【解决方案3】:

    使用codeignitor表单功能:

    <?php $selected = 'Yes'; ?>
    <?php echo form_label('Trailer: ', 'trailer'); ?>
    <?php echo form_label('Yes', 'trailer_yes') . form_radio(array('name' => 'trailer', 'value' => 'Yes', 'checked' => ('Yes' == $selected), 'id' => 'trailer_yes')); ?>&nbsp;&nbsp;
    <?php echo form_label('No', 'trailer_no') . form_radio(array('name' => 'trailer', 'value' => 'No', 'checked' => ('No' == $selected), 'id' => 'trailer_no')); ?>
    <?php echo form_error('trailer'); ?>
    

    【讨论】:

      【解决方案4】:

      检查下面的默认值检查

      <?php
          echo $gender = $this->input->post('gender');
          if($gender=='male' || empty($gender)) $mchecked=true;
          else if($gender=='female') $fchecked=true;
      ?>  
      <?php echo form_label('Gender: ', 'gender'); ?><br />
          <?php echo form_radio('gender', 'male', @$mchecked, 'id=male').form_label('Male', 'male'); ?>
          <?php echo  form_radio('gender', 'female', @$fchecked, 'id=female').form_label('Female','female'); ?>
      

      【讨论】:

        【解决方案5】:

        您可以使用 form_validation 库并以一种非常优雅的方式执行此操作。

        您可以将form_radio()set_radio() 一起使用,如下所示:

        $this->load->library('form_validation');
        echo form_radio('trailer', '1', set_radio('trailer', '1', $row->videotype === "1" ? TRUE : FALSE));
        echo form_radio('trailer', '0', set_radio('trailer', '0', $row->videotype === "0" ? TRUE : FALSE));
        

        这适用于我在 PHP 5.6 上的 Codeigniter 3,也应该适用于其他版本。

        【讨论】:

        • 不工作,先生。我试过你的例子,但它对我不起作用。我在输出中什么也没有得到,此后两个单选框都未选中。
        • 您是否在控制器中运行过验证?控制器和视图中的变量名是否相同?
        • 是的,先生,两个名字一样。我已经在验证表单中获取了所有输入字段的数组。
        猜你喜欢
        • 2021-03-07
        • 2017-05-25
        • 1970-01-01
        • 2015-03-22
        • 2014-12-30
        • 2023-03-17
        • 2015-10-11
        • 1970-01-01
        • 2018-11-27
        相关资源
        最近更新 更多