2013-06-25 67 views
0

試圖將複選框的檢查狀態保存在我的數據庫中。我爲此使用codeigniter。我的cehckbox形式值添加到陣列中,如下所示: 'treated' => $this->input->post('treated'.$i),如何將複選框值寫入數據庫爲1/0而不是/ 0使用codeigniter

我然後寫入到數據庫通過我的陣列,其包含上述的輸入。

這是寫入數據庫的'開',並與char/varchar一起使用。然而,如果我更改爲bittinyint(1)失敗與MSSQL錯誤Conversion failed when converting the varchar value 'on' to data type tinyint.

我怎樣才能通過選中的複選框值1而不是on

在此先感謝。

更新

$i=1; 
    while($i<=$this->input->post('orderlines')) 
    { 
$treatedVal=$this->input->post('treated'.$i)?1:0; 

     //set the data for line insert start 
     $data = array(
     'treated' => $treatedVal,  
     ); 

     $this->sales_model->order_lines_insert($data); 
    $i++; 
    } 
+0

這是一個在您選擇的HTML參考。請*使用*它。例如。用'1'代替'on'的值。完成。 – hakre

+0

簡單的你可以使用'isset($ _ POST ['checkbox'])? 1:0' –

+0

謝謝Dipesh,不工作,仍然'傳遞'到數據庫? – Smudger

回答

4

你應該改變它在HTML本身之前做到這一點。

<html> 
    <input type="checkbox" name="check" value="1" /> <!--give it a value attribute the default is "on"--> 
</html> 
+0

它解決了您的查詢嗎? –

1

簡單地創建數據陣列

$treatedVal=$this->input->post('treated'.$i)?1:0; 
// then add this variable value to your array 
'treated' => $treatedVal, 
+0

謝謝Rajeev,這不起作用'on'仍然被傳遞到數據庫?錯誤:轉換varchar值'轉換爲'數據類型tinyint.'轉換失敗我的語法在問題中更新... – Smudger

+0

@Smudger什麼在$ treatVal和打印last_query() –

0

這是我要做的事:

var myVal = ($('#myCheckbox').is(':checked')) ? 1 : 0; 

alert('myVal is: ' +myVal); //alerts 1 if checked, 0 if not checked 

jsFiddle Demo

相關問題