2014-04-01 101 views
0

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

我试着用下面的代码,它不起作用。我知道不能这样做。 $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'); 

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

回答

6

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函数

+0

如果$按行>的VideoType = 1,请问'set_radio'知道在第一,但不是第二个输出? –

+0

一旦我提交表单,这不会将单选按钮设置为单击按钮。 – Jenz

+0

@Jenz,请检查更新的答案,希望它能工作,这也将在表单验证中检查广播。 – Girish

0

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 
+0

但问题是,一旦表单被提交,它将不会设置为我已检查的单选按钮。 – Jenz

+0

它会在您检索数据之前更新数据库。 –

+0

好吧,'set_radio'函数不需要太多详细的文档。它接受三个参数,它们已经在文档中说明。检查我的答案,我使用codeigniter函数来做到这一点。 – Zeeshan

0

检查默认值检查

<?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'); ?> 
0

您可以使用form_validation库,并在一个更优雅的方式做到这一点。

$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)); 

这对我的作品在笨3 PHP 5.6,应该在其他版本的工作了:

可按如下方式与set_radio()使用form_radio()

+0

不工作,先生。我试过你的例子,但它不适合我。在输出中我什么也得不到,在这之后,这两个收音机箱都没有被选中。 –

+0

你在控制器中运行验证吗?控制器和视图中的变量名称是否相同? – Zeeshan

+0

是的,先生,两个名字都是一样的。我已经在验证表单中获取了所有输入字段的数组。 –

0

使用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'); ?>