Получение значений флажка, проверенных из codeigniter базы данных

Я пытаюсь вставить значения флажков в мою базу данных как проверенные. Я вставил их, используя метод implode, как строку. Он успешно вставил значения., но мое условие для получения значения флажка «отмечено» не работает..

<label>Some text</label>
<input type="checkbox" name="text[]" value="text1" 
<?php echo set_checkbox('text', $row->Some_text)== 'text1' ? "checked" : "";?>>text1
<input type="checkbox" name="text[]" value="text2" 
<?php echo set_checkbox('text', $row->Some_text)== 'text2' ? "checked" : "";?>>text2
<input type="checkbox" name="text[]" value="text3" 
<?php echo set_checkbox('text', $row->Some_text)== 'text3' ? "checked" : "";?>>text3 
<input type="checkbox" name="text[]" value="text4" 
<?php echo set_checkbox('text', $row->Some_text)== 'text4' ? "checked" : "";?>>text4

Я написал модель для редактирования как:

public function edit($id)
    {
    $sometext = $this->input->post('text');
        $data=array(
        'Some_text'=>json_encode(implode(",", $sometext)),
        );
        $this->db->set($data);
        $this->db->where('User_id',$id);
        $this->db->update('tbl_check');
        $query = $this->db->get('tbl_check');
        return $query->row();
        }

И редактирование работает хорошо ..


person Hanan Ashraf    schedule 14.09.2015    source источник
comment
Это немного сбивает с толку, но вы пытались обернуть set_checkbox и == 'text' в ()? Вот так echo (set_checkbox('text', $row->Some_text)== 'text1') ? "checked" : "";?>   -  person Epodax    schedule 14.09.2015
comment
Я думаю, вы должны завернуть все: echo ((set_checkbox('text', $row->Some_text)== 'text1') ? "checked" : "");?>   -  person Vali S    schedule 14.09.2015


Ответы (4)


Иногда использование функций из фреймворков просто делает его совершенно ненужным и грязнее.

<input type="checkbox" name="text[]" value="text1" <?php echo ($yourVar == 'text1' ? 'checked' : null); ?>>
person Linesofcode    schedule 14.09.2015

Просто получите данные из модели. и передайте его на страницу флажка.

$data['check_box_data']=$query->row_array();
$this->load->view('page',$data);

Вид:

<?php 
    $c_box1=$c_box2=$c_box3='';
    $chk_data=explode(',',$chk_box_data); // $chk_box_data is which is from DB
    foreach($chk_data as $list)
    {
      //chk_box1_value1,2,3 are original check box values
      if($list=='chk_box1_value'){$c_box1='checked';}
      if($list=='chk_box2_value'){$c_box2='checked';}
      if($list=='chk_box3_value'){$c_box3='checked';}
    }
?>

label>Some text</label>
<input type="checkbox" name="text[]" value="text1" 
<?php echo $c_box1;?>>text1
<input type="checkbox" name="text[]" value="text2" 
<?php echo $c_box2;?>>text2
<input type="checkbox" name="text[]" value="text3" 
<?php echo $c_box3;?>>text3 

Попробуй это....

person Giri Annamalai M    schedule 14.09.2015

Используя стандартные функции CodeIgniter:

form_checkbox('fieldname', '1', set_checkbox('fieldname', '1', (TEST YOUR DB DATA HERE)));

Пример:

form_checkbox('fieldname', '1', set_checkbox('fieldname', '1', (!empty($data_from_db))));

Объяснение: set_checkbox() определяет, следует ли выводить checked="checked" и, таким образом, отображать ваше поле как отмеченное или нет.

Третий параметр функции set_checkbox() определяет, будет ли начальное состояние вашего флажка отмеченным/не отмеченным. Если третий параметр оценивается как TRUE при первой загрузке формы, флажок будет установлен; если он оценивается как FALSE, он не будет помечен.

Итак, при редактировании данных из таблицы используйте контроллер, чтобы получить данные из таблицы и передать их в форму. В своей форме проверьте данные из таблицы в третьем параметре set_checkbox().

В моем примере выше данные для FIELDNAME были сохранены в таблице как «1» или «0».

Когда форма редактирования загружается, третий параметр SET_CHECKBOX проверяет: "Данные из таблицы пусты?" Если есть данные, !empty() возвращает TRUE, заставляя set_checkbox() установить СОСТОЯНИЕ ПО УМОЛЧАНИЮ в CHECKED.

Ключ использует ТРЕТИЙ ПАРАМЕТР set_checkbox() для оценки вашего существующего значения.

person Genki    schedule 31.07.2018

Вы используете set_checkbox неправильно. Посмотрите документацию: не используйте это в условном операторе. Ваш вопрос не дает много информации, но я предполагаю, что вы хотите что-то вроде этого:

<input type="checkbox" name="text[]" value="text1" 
<?php echo set_checkbox('text[]', 'text1');?>>text1
<input type="checkbox" name="text[]" value="text2" 
<?php echo set_checkbox('text', 'text2');?>>text2
<input type="checkbox" name="text[]" value="text3" 
<?php echo set_checkbox('text', 'text3');?>>text3 
<input type="checkbox" name="text[]" value="text4" 
<?php echo set_checkbox('text', 'text4');?>>text4
person GluePear    schedule 14.09.2015