Ajax datatables поиск по нескольким столбцам - PullRequest
0 голосов
/ 04 ноября 2018

Я новичок в js и datables, и у меня возникают трудности с поиском по одному столбцу при поиске по нескольким столбцам. Вот мой код:

        var dataTable = $('#product_data').DataTable({
         "processing":true,
         "serverSide":true,
         "order":[],
         "ajax":{
            url:"fetch.php",
            type:"POST",
         },
         "columnDefs":[
            {
             "targets":[0,5,7],
             "orderable":false,
            },
         ],
        });

         function load_data(is_suppliers)
         {
          var dataTable = $('#product_data').DataTable({
           "processing":true,
           "serverSide":true,
           "order":[],
           "ajax":{
            url:"fetch.php",
            type:"POST",
            data:{is_suppliers:is_suppliers}
           },
           "columnDefs":[
            {
             "targets":[0,5,7],
             "orderable":false,
            },
           ],
          });
         }

         $(document).on('change', '#supplier_filter', function(){
          var supplier = $(this).val();
          $('#product_data').DataTable().destroy();
          if(supplier != '')
          {
           load_data(supplier);
          }
          else
          {
           load_data();
          }
         });

И запрос, который я использовал, был:

$query = "
SELECT * FROM products
INNER JOIN suppliers
ON suppliers.supplierid = products.supplier
";
$query .= " WHERE ";
if(isset($_POST["is_suppliers"]))
{
 $query .= "products.supplier = '".$_POST["is_suppliers"]."' AND ";
}

if(isset($_POST['search']['value']))
{
 $query .= '
 (productname LIKE "%'.$_POST['search']['value'].'%"
 OR category LIKE "%'.$_POST['search']['value'].'%")
 ';
}

if(isset($_POST['order']))
{
 $query .= 'ORDER BY '.$column[$_POST['order']['0']['column']].' '.$_POST['order']['0']['dir'].' ';
}
else
{
 $query .= 'ORDER BY productid DESC ';
}

$query1 = '';

if($_POST['length'] != -1)
{
 $query1 = 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
}

(Отредактировано - добавлен полный запрос, кроме части выполнения и выборки). Я попытался реплицировать функции и заменить значения на нужный мне столбец, а также добавил еще один if (isset) в запрос, но будет работать только поиск по одному столбцу. а остальные не будут отображать соответствующие записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...