如何根据MULTISELECT

时间:2018-12-18 09:30:43

标签: php codeigniter

我想使用MULTISELECT类别创建数据过滤器功能,其中显示的数据与在过滤器上选择的类别列表一致。因此,我计划根据用户选择的类别列表循环执行OR WHERE命令。 OR WHERE已根据选择的类别数量成功循环,但未针对ID进行循环。并显示诸如“数组到字符串转换”之类的错误

原因是什么,解决方案是什么?谢谢


我的控制器

$sort = $this->input->post('sort');
$category = $this->input->post("get_kategori_acara_css[]");
$interest = $this->input->post("get_interest_acara_css[]");

/* eksekusi library pagination ke model penampilan data */
if (!empty($sort) || !empty ($category) || !empty ($interest))
{ 
  $this->data['list_acara'] = $this->Acara_model->get_filtered($sort, $category, $interest, $config['per_page'], $dari);
}
else 
{
  $this->data['list_acara'] = $this->Acara_model->get_all_arsip();
}

我的模型

public function get_filtered ($sort, $category, $interest) {
$this->db->join('kategori', 'acara.id_kategori = kategori.id_kategori');
$this->db->join('interest_acara ', 'acara.id_acara  = interest_acara.id_acara', 'left');
$this->db->join('hits_acara  ', 'acara.judul_seo = hits_acara.judul_seo', 'left');
$this->db->where('publish','Ya');
$this->db->group_by('acara.judul_seo');
if(!empty($sort AND empty($category) AND empty($interest))) 
{
  $this->db->order_by($sort, $this->order);
}
elseif(!empty($sort) AND !empty($category) AND empty($interest)) 
{
  foreach ($category as $value) {
    $this->db->or_where('acara.id_kategori', $value->id_kategori);
  }
}
return $this->db->get($this->table)->result();
}

Shown Error

My Multiselect Feature

1 个答案:

答案 0 :(得分:0)

问题是在$value->id_kategori循环中使用foreach ($category as $value)

变量$value不是对象,因此尝试获取属性的值,即$value->id_kategori毫无意义。

$category是一个简单的索引数组,例如:

array('0'=>'123', '1'=>'456', '2'=>'789')

我认为您需要做的就是改变这一点

$this->db->or_where('acara.id_kategori', $value->id_kategori);

对此

$this->db->or_where('acara.id_kategori', $value);