2014-04-01 174 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'); ?>