Как вставить несколько значений флажка в mysql с помощью codeigniter

Я новичок в codeigniter. Я пытаюсь вставить несколько новостей, содержащих некоторый флажок, где его значения зацикливаются из базы данных. Но я не знаю, что должен писать код для этого в контроллере и модели для вставки значений. Может ли кто-нибудь предложить или помочь мне написать код?

view – content.php :

//category name <?php foreach($result as $aresult) { ?> <input type="checkbox" name="category_name[]" value="<?php echo $aresult->category_name;?>" /> <?php echo $aresult->category_name;?> <?php } ?> 

контроллер – новости :

 public function savecontent() { $data=array(); foreach($this->input->post('category_name') as $category_name) { $data[] = array('category_name' => $category_name); } $data['content_headline']=$this->input->post('content_headline',true); $this->co_model->save_content($data); } 

Модель:

 public function save_content($data) { $this->db->insert('content',$data); } 

Структура базы данных:

 id(auto incr.), category_name(varchar 50), content_headline(varchar 100) 

теперь, что я должен изменить, чтобы вставить несколько строк, используя флажок? здесь есть еще одно текстовое поле / столбец, которые также вставляются в базу данных. но только имя категории (значение флажка) должно быть изменено для всех значений.

Прежде всего вам необходимо настроить структуру базы данных. По-видимому, существует связь M: N между content и category . Более подходящей схемой будет:

 create table content ( id int not null auto_increment primary key, content_headline varchar(100) not null ); create table category ( id int not null auto_increment primary key, caregory_name varchar(100) not null ); create table content_category ( content int not null references content, category int not null references category, primary key (content,category) ); 

Затем вам нужно настроить свой код, чтобы отразить новую схему.

Предположим, что вы получаете $result из select * from category , ваше представление сводится к:

 <label> Headline: <input type='text' name='headline'> </label> <?php foreach($result as $aresult): ?> <label> <input type="checkbox" name="category[<?php echo $aresult->id; ?>]"> <?php echo $aresult->category_name; ?> </label> <?php endforeach; ?> 

Когда вы отправили сообщение, это предоставит вам массив, подобный следующему:

 array( 'headline'=>'War and Peace', 'category'=>array( 45=>'on', 6=>'on' ) ); 

… где 45 и 6 являются проверенными идентификаторами категорий. Обратите внимание, что если ни одна категория не отмечена, массив category не будет определен.

Таким образом, контроллер становится:

 public function savecontent() { $post=$this->input->post(); $selected_cats=(isset($post->category)?array_keys($post->category):array()); $data=array( 'headline'=>$post->headline, 'category'=>$selected_cats ); $this->co_model->save_content($data); } 

И, наконец, модель:

 public function save_content($data) { $this->db->insert('content',array('content_headline',$data['headline']); $content=$this->db->insert_id(); // what we inserted foreach($data['category'] as $cat) $this->db->insert( 'content_category', array( 'content'=>$content, 'category'=>$cat ) ); }