douling8772 2019-07-12 13:37
浏览 105
已采纳

如何从复选框中获取值并在codeigniter中发布数组?

How to get value form multiples checkbox and post array in codeigniter? I have problem when I get value post array and echo the value. I see only the value of the last checked checkbox. How to show post value when submit? You find three files: view, Controller and Model. Please check where I wrong...

UPDATE.PHP:

<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
<div class="row">
<div class="col-sm-12">
<?php echo form_open('page_controller/update_page_post'); ?>

<div class="form-group">
            <div class="row">
                <div class="col-sm-3 col-xs-12">
                    <label><?php echo trans('subcategory'); ?></label>
                </div>
           </div><div class="col-xm-12">
                         <div class="table-responsive">
                             <table class="table table-bordered table-striped" role="grid">
                            <tbody>
                                <tr>
                                <?php   $valuesub = ($page->subcat_recip_id); ?>
                            <?php   $array_of_values = explode(",", $valuesub); 
                                //if ($item['parent_id'] != "0" && $item['subcat_recip_id'] == "0") :
                    foreach ($array_of_values as $item) { 

                        if(in_array($subcat_recip_id,$item)): {  ?>

                       <td>
                           <input type="checkbox" name="subcat_recip_id[]" class="square-purple" value="<?php echo html_escape($item["title"]); ?>" CHECKED> &nbsp; <?php echo html_escape($item["title"]);
                                    } ?>
                                <?php   else: { ?>
<input type="checkbox" name="subcat_recip_id[]" class="square-purple" value="<?php echo html_escape($item["title"]); ?>"> &nbsp; <?php echo html_escape($item["title"]);
                        } 

                                endif;  }?>
                                </td> 
        <?php echo html_escape($valuesub); ?></tr>
                                 </tbody>
                             </table>
                 </div>   
                </div>
        </div>

PAGE_MODEL.PHP:

<?php class Page_model extends CI_Model
{
public function input_values()
{
    $data = array(
        'lang_id' => $this->input->post('lang_id', true),
        'title' => $this->input->post('title', true),
        'slug' => $this->input->post('slug', true),
        'page_description' => $this->input->post('page_description', true),
        'page_keywords' => $this->input->post('page_keywords', true),
        'page_content' => $this->input->post('page_content', false),
        'parent_id' => $this->input->post('parent_id', true),
        'page_active' => $this->input->post('page_active', true),
        'title_active' => $this->input->post('title_active', true),
        'breadcrumb_active' => $this->input->post('breadcrumb_active', true),
        'need_auth' => $this->input->post('need_auth', true),
        'howmany_people' => $this->input->post('howmany_people', true),
        'difficulty' => $this->input->post('difficulty', true),
        'howmany_time' => $this->input->post('howmany_time', true),
        'location' => $this->input->post('location', true),
        'subcat_recip_id' => $this->input->post('subcat_recip_id')
    for ($i=0; $i<count($menu_links); $i++) 
   {
    echo $subcat_recip_id[$i];
   } 
    );  
    return $data;
}
//add page
public function add()
{
    $data = $this->page_model->input_values();
    if (empty($data["slug"])) 
    {
    //slug for title
    $data["slug"] = str_slug($data["title"]);
    if (empty($data["slug"])) 
      {
            $data["slug"] = "page-" . uniqid();
      }
    }
    return $this->db->insert('pages', $data);
}

//update page
public function update($id)
{
    //set values
    $data = $this->page_model->input_values();
    if (empty($data["slug"])) {
        //slug for title
        $data["slug"] = str_slug($data["title"]);
        if (empty($data["slug"])) {
            $data["slug"] = "page-" . uniqid();
        }
    }
  $page = $this->get_page_by_id($id);
  if (!empty($page))  {
    $this->db->where('id', $id);
    return $this->db->update('pages', $data);
}
     return false;
}

PAGE_CONTROLLER.PHP

 * Add Page Post*/
public function add_page_post()
{
    //validate inputs
    $this->form_validation->set_rules('title', trans("title"), 'required|xss_clean|max_length[500]');

    if ($this->form_validation->run() === false) {
        $this->session->set_flashdata('errors', validation_errors());
        $this->session->set_flashdata('form_data', $this->page_model->input_values());
        redirect($this->agent->referrer());
    } else {

        if (!$this->page_model->check_page_name()) {
            $this->session->set_flashdata('form_data', $this->page_model->input_values());
            $this->session->set_flashdata('error', trans("msg_page_slug_error"));
            redirect($this->agent->referrer());
            exit();
        }

        if ($this->page_model->add()) {
            $this->session->set_flashdata('success', trans("page") . " " . trans("msg_suc_added"));
            redirect($this->agent->referrer());
        } else {
            $this->session->set_flashdata('form_data', $this->page_model->input_values());
            $this->session->set_flashdata('error', trans("msg_error"));
            redirect($this->agent->referrer());
        }
    }
}
  • 写回答

2条回答 默认 最新

  • dongyue110702 2019-07-12 18:03
    关注

    I have tried this code in your Page_model put this code.

    public function input_values(){
    $checkbox = implode(',', $this->checkBox());
    $data = array(
        'lang_id' => $this->input->post('lang_id', true),
        'title' => $this->input->post('title', true),
        'slug' => $this->input->post('slug', true),
        'page_description' => $this->input->post('page_description', true),
        'page_keywords' => $this->input->post('page_keywords', true),
        'page_content' => $this->input->post('page_content', false),
        'parent_id' => $this->input->post('parent_id', true),
        'page_active' => $this->input->post('page_active', true),
        'title_active' => $this->input->post('title_active', true),
        'breadcrumb_active' => $this->input->post('breadcrumb_active', true),
        'need_auth' => $this->input->post('need_auth', true),
        'howmany_people' => $this->input->post('howmany_people', true),
        'difficulty' => $this->input->post('difficulty', true),
        'howmany_time' => $this->input->post('howmany_time', true),
        'location' => $this->input->post('location', true),
        'subcat_recip_id' => $checkbox
    );
    }
    
    public function checkBox(){
    $count = count($_POST['subcat_recip_id']);
    for($n=0; $n<$count; $n++){
    $checkbox[$n] = $_POST['subcat_recip_id'][$n];
    }
    return $checkbox;
    }
    

    hopefully it helps

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • duansha3771 2019-07-12 15:27
    关注

    This is what $menu_links is:

    public function get_menu_links_by_lang()
    {
        $lang_id = $this->input->post('lang_id', true);
        if (!empty($lang_id)):
            $menu_links = $this->navigation_model->get_menu_links_by_lang($lang_id);
            foreach ($menu_links as $item):
                if ($item["type"] != "category" && $item["location"] == "header" && $item['parent_id'] == "0"):
                    echo ' <option value="' . $item["id"] . '">' . $item["title"] . '</option>';
                endif;
            endforeach;
        endif;
    }      
    

    I edited a code to insert new form page and I need this page to enter some values into DB. All works Ok and they inserted to DB, only the checkbox doesn't work or better it take only the value of the last checked checkbox and not all the checkbox checked! I have tried it in many ways but I can't do it alone. Sorry.

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
  • ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
  • ¥30 各位help写一下代码
  • ¥15 在运行SDEdit模型下载不了
  • ¥15 求51控制l298n驱动的小车中超声波避障怎么写
  • ¥15 电脑连上WIFI却用不了
  • ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
  • ¥15 hyper-v出现的问题
  • ¥15 有能用的可加酬金,求可以批量下载懒人听书的软件,能登录自己帐号的。
  • ¥100 高博一起做RGB-D SLAM(5)VO无法出visualisation问题