How to retrieve the array values from multiples checkbox? I have problem when I retrieve value array and echo the value. I get this error
Severity: Warning
Message: in_array() expects parameter 2 to be array, string given
Filename: page/update.php.
Please, could you help me again? Thank you.
You find three files: View, Model and Controller. 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($valuesub,$item)): { ?> <td> <input type="checkbox" name="subcat_recip_id[]" class="square-purple" value="<?php echo html_escape($item["title"]); ?>" CHECKED> <?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"]); ?>"> <?php echo html_escape($item["title"]); } endif; }?> </td> <?php echo html_escape($valuesub); ?></tr> </tbody> </table> </div> </div> </div>
PAGE_CONTROLLER.PHP
public function update_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 { //get id $id = $this->input->post('id', true); $redirect_url = $this->input->post('redirect_url', true); 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->update($id)) { $this->session->set_flashdata('success', trans("msg_updated")); if (!empty($redirect_url)) { redirect($redirect_url); } else { redirect(admin_url() . 'pages'); } } else { $this->session->set_flashdata('form_data', $this->page_model->input_values()); $this->session->set_flashdata('error', trans("msg_error")); redirect($this->agent->referrer()); } } }
PAGE_MODEL.PHP
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Page_model extends CI_Model { //input values 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), 'page_order' => $this->input->post('page_order', true), '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), 'right_column_active' => $this->input->post('right_column_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 ); return $data; } public function checkBox(){ $count = count($_POST['subcat_recip_id']); for($n=0; $n<$count; $n++){ $checkbox[$n] = $_POST['subcat_recip_id'][$n]; } return $checkbox; } //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; }
Advertisement
Answer
in your you view,
<tr> <?php $valuesub = ($page->subcat_recip_id); ?> <?php $array_of_values = explode(",", $valuesub); 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> <?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"]); ?>"> <?php echo html_escape($item["title"]); } endif; }?> </td> <?php echo html_escape($valuesub); ?> </tr>
change to :
<tr> <?php $valuesub = ($page->subcat_recip_id); $array_of_values = explode(",", $valuesub); ?> <td> <?php foreach ($array_of_values as $item) :?> <input type="checkbox" name="subcat_recip_id[]" class="square-purple" value="<?php echo html_escape($item["title"]); ?>" <?=(in_array($subcat_recip_id,$item))?"CHECKED":""?>> <?=html_escape($item["title"]);?>' <?php endforeach; ?> </td> <?=html_escape($valuesub)?> </tr>
in model :
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; }
change to :
public function update($id){ $data = $this->input_values(); if (empty($data["slug"])) { $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; }
please update if you getting error, tq