Фильтрация нескольких значений из одного столбца с использованием предложения Like в Active Records Codeigniter.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Фильтрация нескольких значений из одного столбца с использованием предложения Like в Active Records Codeigniter.

Сообщение Anonymous »

Я пытаюсь отфильтровать столбец из базы данных MySQL с помощью Codeigniter Active Records. Я передаю значения из раскрывающегося списка и использую его, чтобы фильтровать данные. Когда я выбираю одно значение из другого раскрывающегося списка, я получаю правильный отфильтрованный результат. Но когда я пытаюсь отфильтровать, используя несколько значений из одного раскрывающегося списка, выдает


Соответствующие записи не найдены


в таблице данных. Для фильтрации я использую оператор Like.

Вот код моей модели:

Код: Выделить всё

private function _get_datatables_query()
{

//add custom filter here
// if($this->input->post('startdate') && $this->input->post('enddate'))
// {
//  $this->db->where("'FUPdate' BETWEEN 'startdate' AND 'enddate'");
// }
if($this->input->post('area'))
{
$this->db->like('area_name', $this->input->post('area'));
}
if($this->input->post('cluster'))
{
$clustersID['cluster']=$this->input->post('cluster');
if(!empty($clustersID['cluster'])){
// Array contains values, everything ok
$clusterString = implode(', ', $clustersID['cluster']);
}

if ($clusterString) {
$this->db->like('cluster_name', $clusterString);
} else {
$this->db->or_like('cluster_name', $clusterString);
}

}
if($this->input->post('timeframe'))
{
$this->db->like('timeframe_name', $this->input->post('timeframe'));
}
if($this->input->post('defect_status'))
{
$this->db->like('defect_status_name', $this->input->post('defect_status'));
}
if($this->input->post('startdate'))
{
$this->db->like('FUPdate', $this->input->post('startdate'));
}
if($this->input->post('enddate'))
{
$this->db->like('FUPdate', $this->input->post('enddate'));
}

$this->db->from($this->Property_Defect_View);
$i = 0;

foreach ($this->Property_Defect_search as $item) // loop column
{
if($_POST['search']['value']) // if datatable send POST for search
{

if($i===0) // first loop
{
$this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
$this->db->like($item, $_POST['search']['value']);
}
else
{
$this->db->or_like($item, $_POST['search']['value']);
}

if(count($this->Property_Defect_search) - 1 == $i) //last loop
$this->db->group_end(); //close bracket
}
$i++;
}

if(isset($_POST['order'])) // here order processing
{
$this->db->order_by($this->Property_Defect_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
}
else if(isset($this->order))
{
$order = $this->order;
$this->db->order_by(key($order), $order[key($order)]);
}
}
Мой вопрос: как передать массив в предложение Like для фильтрации данных?

Выше я хочу выбрать несколько кластеров для фильтрации данных. можно ли использовать операцию AND с оператором Like.

Подробнее здесь: https://stackoverflow.com/questions/497 ... igniter-ac
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»