2013-06-25 2 views
0

пытается сохранить флажок 'checked status в моей базе данных. Для этого я использую codeigniter. Я добавляю значение формы cehckbox в массив следующим образом: 'treated' => $this->input->post('treated'.$i),как записать значение флажка в базу данных как 1/0 вместо on/0 с codeigniter

Затем я пишу в базу данных, передавая свой массив, содержащий указанный выше вход.

это записывается в базу данных как «включено» и работает с char/varchar. если же я изменить это bit или tinyint(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 ссылки выбора. Пожалуйста * используйте * это. Например. замените значение 'on' на' 1'. Готово. – hakre

+0

просто вы можете сделать это с помощью 'isset ($ _ POST ['checkbox'])? 1: 0' –

+0

Спасибо Dipesh, не работает, все еще передавая 'on' в базу данных? – 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' все еще передается в базу данных? error: 'Conversion failed при преобразовании значения varchar 'on' в тип данных tinyint.' мой синтаксис обновлен в вопросе ... – Smudger

+0

@Smudger, что происходит в $ обработанномVal и печатает last_query() –

0

Это, как я это делаю:

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

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

jsFiddle Demo