使用codeigniter在mysql中插入复选框值 [英] Insert checkbox value in mysql by using codeigniter

查看:41
本文介绍了使用codeigniter在mysql中插入复选框值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Codeigniter的新手。我正在尝试插入包含一些复选框的多个新闻,该复选框的值从数据库中循环出来。但是我不知道应该在控制器&中为此编写什么代码。建模以插入值。有人可以建议或帮我写代码吗?



view(content.php)

 <?php 

foreach($ result为$ aresult)
{

?>
< input type = checkbox name = category_name [<?php echo $ aresult-> category_name;?>>] value =<?php echo $ aresult-> category_name ;? > /> <?php echo $ aresult-> category_name;?> < br>
<?php
}
foreach($ area作为$ aresult1)
{

?>
< input type = checkbox name = category_name [<?php echo $ aresult-> category_name;?>>] value =<?php echo $ aresult1-> category_name ;? > /> <?php echo $ aresult1-> category_name;?> < br>
<?php

}
?>

< tr> < td> < input type = text required = 1 name = content_headline tabindex = 3 placeholder = Content Headline size = 80 /> < / tr> < / td>
< tr> < td> < textarea name = content_shortdetails tabindex = 4 maxlength = 145 placeholder = Content Short Details rows = 10 cols = 78>< / textarea> < / tr> < / td>
< tr>
< td>图片< / td>
< td>
<输入类型=文件 name =图像 tabindex = 8 />
< / td>
< / tr>
< tr>
< td>出版物状态:< / td>
< td>
<输入类型= radio name = publication_status value = 1 tabindex = 3 />发布
<输入类型= radio name = publication_status value = 0 tabindex = 4 />取消发布
< / td>
< / tr>
< tr>
< td> <输入类型=提交 name = btn value =保存 tabindex = 9 />< / td>
< / tr>

控制器(content):

公共功能savecontent()
{
$ data = array();
date_default_timezone_set('亚洲/达卡');
$ now = date( Y-m-d H:i:s);
$ data ['admin_id'] = $ this-> session-> userdata('admin_id');
$ data ['category_name'] = $ this-> input-> post('category_name',true);
$ data [’content_headline'] = $ this-> input-> post(’content_headline',true);
$ data ['content_shortdetails'] = $ this-> input-> post('content_shortdetails',true);
$ data ['publication_status'] = $ this-> input-> post('publication_status',true);
$ data [’date_add’] = $现在;
/ * -------------图片上传---------------- * * /
$ this-> load- > library('upload');
$ config [’upload_path'] =‘./images/news_images/’;
$ config [’allowed_types’] =‘gif | jpg | png | mp3’;
$ config ['max_size'] ='100000';
$ config [’max_width'] =’;
$ config [’max_height'] =’;
$ error =’;
$ udata =’;

$ this-> upload-> initialize($ config);
if(!$ this-> upload-> do_upload('image')){
$ error = array('error'=> $ this-> upload-> display_errors( ));
//回声< pre>;
// print_r($ error);
// $ this-> load-> view('upload_form',$ error);
} else {

$ udata = array(‘upload_data’=> $ this-> upload-> data());
$ data [’image’] = images / news_images /。 $ udata ['upload_data'] ['file_name'];
$ this-> load-> view('upload_success',$ data);
}
$ this-> co_model-> save_content($ data);
}

model(co_model):

公共功能save_content($ data)
{
$ this-> db-> ; insert('content',$ data);
}

数据库结构:

 类别{cat_id(自动增加),category_name(varchar 50)} 
内容{id(自动增加),category_name(varchar 50),content_headline(varchar 50) ,shortdetails(varchar 50),publication_status(tinyint 1),date_add(datetime),image(varchar 255)}

来自类别表,其中我已经插入了一些类别名称,然后所有新闻都插入到内容表中。
现在我该如何更改以使用复选框插入多行?当我插入一个新闻时,可以在db的多行中插入多个类别名称(复选框值),以及其他值(其他值不变)。

像:类别名称(复选框)= c_1,c_3,c_4

{内容标题=某些
shortdetails =再次某些
法师=图片。 jpg
发布状态= 1(发布)}->所有此新闻项目在所有选中的类别中都是相同的


解决方案

您将必须遍历类别名称,因为category_names是一个数组,因此其中可能具有不同的值,这就是为什么您必须遍历每个索引并将记录与每个索引保存在数据库中的原因我已经解决了控制器的问题,但是存在歧义在您看来,您正在对两个数组使用category_names导致问题,因此我也将其更改。

 公共函数savecontent() 
{

$ check = $ this-> input-> post('category_name',true);
$ area = $ this-> input-&post; post(’category_area’,true);
for($ i = 0; $ i< sizeof($ check); $ i ++;)
{
$ data = array();
date_default_timezone_set('亚洲/达卡');
$ now = date( Y-m-d H:i:s);
$ data ['admin_id'] = $ this-> session-> userdata('admin_id');
$ data ['category_name'] = $ check [$ i];
$ data ['category_area'] = $ area [$ i];
$ data [’content_headline'] = $ this-> input-> post(’content_headline',true);
$ data ['content_shortdetails'] = $ this-> input-> post('content_shortdetails',true);
$ data ['publication_status'] = $ this-> input-> post('publication_status',true);
$ data [’date_add’] = $现在;
/ * -------------图片上传---------------- * * /
$ this-> load- > library('upload');
$ config [’upload_path'] =‘./images/news_images/’;
$ config [’allowed_types’] =‘gif | jpg | png | mp3’;
$ config ['max_size'] ='100000';
$ config [’max_width'] =’;
$ config [’max_height'] =’;
$ error =’;
$ udata =’;

$ this-> upload-> initialize($ config);
if(!$ this-> upload-> do_upload('image')){
$ error = array('error'=> $ this-> upload-> display_errors( ));
//回声< pre>;
// print_r($ error);
// $ this-> load-> view('upload_form',$ error);
} else {

$ udata = array(‘upload_data’=> $ this-> upload-> data());
$ data [’image’] = images / news_images /。 $ udata ['upload_data'] ['file_name'];
$ this-> load-> view('upload_success',$ data);
}
$ this-> co_model-> save_content($ data);
}
redirect('要重定向的函数名')
}

}

现在,您的视图有几处更改,其余部分遍历代码。

  foreach($ result为$ aresult)
{

?>
< input type = checkbox name = category_name [<?php echo $ aresult-> category_name;?>>] value =<?php echo $ aresult-> category_name ;? > /> <?php echo $ aresult-> category_name;?> < br>
<?php
}
foreach($ area作为$ aresult1)
{

?>
< input type = checkbox name = category_area [<?php echo $ aresult-> category_name;?>>] value =<?php echo $ aresult1-> category_name ;? > /> <?php echo $ aresult1-> category_name;?> < br>
<?php

}
?>

< tr> < td> < input type = text required = 1 name = content_headline tabindex = 3 placeholder = Content Headline size = 80 /> < / tr> < / td>
< tr> < td> < textarea name = content_shortdetails tabindex = 4 maxlength = 145 placeholder = Content Short Details rows = 10 cols = 78>< / textarea> < / tr> < / td>
< tr>
< td>图片< / td>
< td>
<输入类型=文件 name =图像 tabindex = 8 />
< / td>
< / tr>
< tr>
< td>出版物状态:< / td>
< td>
<输入类型= radio name = publication_status value = 1 tabindex = 3 />发布
<输入类型= radio name = publication_status value = 0 tabindex = 4 />取消发布
< / td>
< / tr>
< tr>
< td> <输入类型=提交 name = btn value =保存 tabindex = 9 />< / td>
< / tr>

更改数据库结构,添加要保存不同区域的列名称区域


i am novice in codeigniter. I am trying to insert multiple news that contains some check-box where its values are looped from a database. But i don't know what should code i write for this in controller & Model to insert values. can any one suggest or help me to write code?

view(content.php)

  <?php

               foreach($result as $aresult)
               {

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

                ?>   
                <input type="checkbox" name="category_name[<?php echo $aresult->category_name; ?>]" value="<?php echo $aresult1->category_name;?>" /> <?php echo $aresult1->category_name;?> <br>
             <?php 

                    } 
                ?>

   <tr> <td>   <input type="text" required="1" name="content_headline" tabindex="3" placeholder="Content Headline" size="80"/>  </tr> </td>
  <tr> <td>     <textarea name="content_shortdetails"  tabindex="4" maxlength="145" placeholder="Content Short Details" rows="10" cols="78"></textarea>   </tr> </td>
 <tr>
        <td>Picture</td>
        <td>
            <input type="file" name="image" tabindex="8"/>                
        </td>
    </tr>
    <tr>
        <td>Publication Status:</td>
        <td>
            <input type="radio" name="publication_status" value="1" tabindex="3"  />Publish
            <input type="radio" name="publication_status" value="0" tabindex="4"  />Unpublish
        </td>
    </tr>
   <tr>
        <td> <input type="submit" name="btn"  value="Save" tabindex="9"/></td>
    </tr>

 controller(content) :

public function savecontent()
    {    
        $data=array();
        date_default_timezone_set('Asia/Dhaka');
        $now = date("Y-m-d H:i:s");
        $data['admin_id']=$this->session->userdata('admin_id');
        $data['category_name']=$this->input->post('category_name',true);
        $data['content_headline']=$this->input->post('content_headline',true);
        $data['content_shortdetails']=$this->input->post('content_shortdetails',true);
        $data['publication_status']=$this->input->post('publication_status',true);
        $data['date_add']=$now; 
         /* -------------Image Upload---------------- */
            $this->load->library('upload');
            $config['upload_path'] = './images/news_images/';
            $config['allowed_types'] = 'gif|jpg|png|mp3';
            $config['max_size'] = '100000';
            $config['max_width'] = '';
            $config['max_height'] = '';
            $error = '';
            $udata = '';

            $this->upload->initialize($config);
            if (!$this->upload->do_upload('image')) {
                $error = array('error' => $this->upload->display_errors());
                // echo '<pre>';
                // print_r($error);
                //$this->load->view('upload_form', $error);
            } else {

                $udata = array('upload_data' => $this->upload->data());
                $data['image'] = "images/news_images/" . $udata['upload_data']['file_name'];
                $this->load->view('upload_success', $data);
            }
        $this->co_model->save_content($data);
  }

  model(co_model) :

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

Database structure:

 category { cat_id(auto incr.), category_name(varchar 50) } 
 content { id(auto incr.), category_name(varchar 50), content_headline(varchar 50), shortdetails(varchar 50),  publication_status(tinyint 1), date_add(datetime), image(varchar 255) }  

in view page category_name are come from category table where i already inserted some category name and then all news are inserted in content table.
now what should i change to insert multiple row using checkbox ? when i insert one news it can be insert multiple category name(checkbox value) in multiple row in db with other value (other value not changed) .

like: category name (checkbox) =c_1, c_3, c_4 

{      content headline = something
      shortdetails = again something
      mage = pic.jpg
      publication status = 1 (publish)  }--> all this news item as same in all checked category

解决方案

You will have to loop through category names because category_names is an array so it may have different values in it that's why you have to loop through each index and save the record with each index in database i have solved the issues with controller but there is in ambiguity in your view you are using category_names for two arrays which cause the problem so i have also change it.

public function savecontent()
    {  

       $check=$this->input->post('category_name',true);
       $area=$this->input->post('category_area',true);
       for($i=0; $i<sizeof($check); $i++;)
       {
        $data=array();
        date_default_timezone_set('Asia/Dhaka');
        $now = date("Y-m-d H:i:s");
        $data['admin_id']=$this->session->userdata('admin_id');
        $data['category_name']=$check[$i];
        $data['category_area']=$area[$i];
        $data['content_headline']=$this->input->post('content_headline',true);
        $data['content_shortdetails']=$this->input->post('content_shortdetails',true);
        $data['publication_status']=$this->input->post('publication_status',true);
        $data['date_add']=$now; 
         /* -------------Image Upload---------------- */
            $this->load->library('upload');
            $config['upload_path'] = './images/news_images/';
            $config['allowed_types'] = 'gif|jpg|png|mp3';
            $config['max_size'] = '100000';
            $config['max_width'] = '';
            $config['max_height'] = '';
            $error = '';
            $udata = '';

            $this->upload->initialize($config);
            if (!$this->upload->do_upload('image')) {
                $error = array('error' => $this->upload->display_errors());
                // echo '<pre>';
                // print_r($error);
                //$this->load->view('upload_form', $error);
            } else {

                $udata = array('upload_data' => $this->upload->data());
                $data['image'] = "images/news_images/" . $udata['upload_data']['file_name'];
                $this->load->view('upload_success', $data);
            }
          $this->co_model->save_content($data);
        }
        redirect('function name where you want to redirect ')
  }

}

Now your View have several changes the rest is the same loop through the code.

           foreach($result as $aresult)
               {

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

                ?>   
                <input type="checkbox" name="category_area[<?php echo $aresult->category_name; ?>]" value="<?php echo $aresult1->category_name;?>" /> <?php echo $aresult1->category_name;?> <br>
             <?php 

                    } 
                ?>

   <tr> <td>   <input type="text" required="1" name="content_headline" tabindex="3" placeholder="Content Headline" size="80"/>  </tr> </td>
  <tr> <td>     <textarea name="content_shortdetails"  tabindex="4" maxlength="145" placeholder="Content Short Details" rows="10" cols="78"></textarea>   </tr> </td>
 <tr>
        <td>Picture</td>
        <td>
            <input type="file" name="image" tabindex="8"/>                
        </td>
    </tr>
    <tr>
        <td>Publication Status:</td>
        <td>
            <input type="radio" name="publication_status" value="1" tabindex="3"  />Publish
            <input type="radio" name="publication_status" value="0" tabindex="4"  />Unpublish
        </td>
    </tr>
   <tr>
        <td> <input type="submit" name="btn"  value="Save" tabindex="9"/></td>
    </tr>

Change the Database structure add a column name areas where the different areas are gonna save

这篇关于使用codeigniter在mysql中插入复选框值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆