За последние 24 часа нас посетили 20473 программиста и 1126 роботов. Сейчас ищут 702 программиста ...

поиск по отдельным столбцам php

Тема в разделе "PHP для новичков", создана пользователем mixnet, 25 мар 2020.

  1. mixnet

    mixnet Новичок

    С нами с:
    11 авг 2018
    Сообщения:
    146
    Симпатии:
    7
    Здравствуйте использую библиотеку https://datatables.net/\

    Screenshot_4.png

    на скрине вот что у меня сейчас, но поиск по столбцам не работают, подскажите как в данной библиотеке реализовать поиск по отдельным столбцам?
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Это jquey библиотека.
    То есть вам сначала надо получить данные из бд, а потом уже впихнуть этой библиотекой в таблицу.
    Эта библиотека уже будет работать с теми данными что есть. И если вы все правильно сделали, все должно работать.
    Если что то не пашет F12 и смотреть в консоли.
     
  3. mixnet

    mixnet Новичок

    С нами с:
    11 авг 2018
    Сообщения:
    146
    Симпатии:
    7
    вот так сделал

    Код (Javascript):
    1.  $(document).ready(function() {
    2.         // Setup - add a text input to each footer cell
    3.         $('#science tfoot tr').clone(true).appendTo( '#science thead' );
    4.         $('#science thead tr:eq(1) th').each( function (i) {
    5.             let title = $(this).text();
    6.             $(this).html( '<input type="text" placeholder="Поиск по '+title+'" />' );
    7.  
    8.             $( 'input', this ).on( 'keyup change', function () {
    9.                 if ( dataTable.column(i).search() !== this.value ) {
    10.                     dataTable
    11.                         .column(i)
    12.                         .search( this.value )
    13.                         .draw();
    14.                 }
    15.             } );
    16.         } );
    17.  
    18. let  dataTable = $('#science').DataTable({
    19. ..//code
    20.  
    21. }

    в php данные впихнул.. для поиска по всем столбцам работает, обращаюсь к общему поиску таким образом

    PHP:
    1. if(isset($_POST["search"]["value"]))
    2. {
    3.     $query .= ' WHERE столбец в таблице LIKE "%'.$_POST["search"]["value"].'%"
    4.     OR столбец в таблице LIKE "%'.$_POST["search"]["value"].'%"
    5.     OR столбец в таблице LIKE "%'.$_POST["search"]["value"].'%"
    6.     OR столбец в таблице LIKE "%'.$_POST["search"]["value"].'%"
    7.     OR столбец в таблице LIKE "%'.$_POST["search"]["value"].'%"
    8.     OR столбец в таблице LIKE "%'.$_POST["search"]["value"].'%"
    9.     ';
    10. }
    но как сделать по колонком не понимаю, сделал сортировку так
    PHP:
    1. if(isset($_POST["order"]))
    2. {
    3.     $query .= 'ORDER BY '.$columns[$_POST['order']['0']['column']].' '.$_POST['order']['0']['dir'].'';
    4. } else {
    5.     $query .= 'ORDER BY id ASC';
    6. }
    тоже работает, а вот как сделать поиск по таблицам отдельным... не доходит,... в концоле ошибок нет, так как не знаю, как привязать input поиск по столбцам, к запросу Post, как это сделать?


    вот мой input, он один, но выводит 14 input'ов, думал прописать 14 input и добавить каждому name и по name обращаться к POST, но так не работает


    let title = $(this).text();
    $(this).html( '<input type="text" placeholder="Поиск по '+title+'" />' );
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
  5. mixnet

    mixnet Новичок

    С нами с:
    11 авг 2018
    Сообщения:
    146
    Симпатии:
    7
    я извиняюсь, поиск по отдельным столбцам нужен, находил данную информацию по вышеуказанным ссылкам, но не работает и ошибок нету вот мой jquery

    Код (Javascript):
    1.  $(document).ready(function() {
    2.         // Setup - add a text input to each footer cell
    3.         $('#science tfoot tr').clone(true).appendTo( '#science thead' );
    4.         $('#science thead tr:eq(1) th').each( function (i) {
    5.             let title = $(this).text();
    6.             $(this).html( '<input type="text" placeholder="Поиск по '+title+'" />' );
    7.             $( 'input', this ).on( 'keyup change', function () {
    8.                 if ( dataTable.column(i).search() !== this.value ) {
    9.                     dataTable
    10.                         .column(i)
    11.                         .search( this.value )
    12.                         .draw();
    13.                 }
    14.             } );
    15.         } );
    16. let  dataTable = $('#science').DataTable({
    17. ..//code
    18. }
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Я проверил. Все работает. Фильтрацию по нескольким столбцам нужно делать при помощи AND ;)
    --- Добавлено ---
    P.S. При пустых искомых значениях для конкретных столбцов лучше вообще не добавлять соотв. условия в запрос.
     
  7. mixnet

    mixnet Новичок

    С нами с:
    11 авг 2018
    Сообщения:
    146
    Симпатии:
    7
    на чистом html работает, с php не получается реализовать, не пойму как привязать POST запрос, так как 1 input выводится на 14 столбцов
    --- Добавлено ---
    сможете пример показать кода? как реализовано с php
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Код (Javascript):
    1. $(document).ready(function() {
    2.     // Setup - add a text input to each footer cell
    3.     $("#example tfoot th").each( function () {
    4.         var title = $(this).text();
    5.         $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
    6.     } );
    7.     // DataTable
    8.     var table = $("#example").DataTable( {
    9.         "processing": true,
    10.         "serverSide": true,
    11.         "ajax": {
    12.             "url": "/post",
    13.             "type": "POST"
    14.         },
    15.         "columns": [
    16.             { "data": "id" },
    17.             { "data": "name" },
    18.             { "data": "content" }
    19.         ]
    20.     } );
    21.     // Apply the search
    22.     table.columns().every( function () {
    23.         var that = this;
    24.         $( "input", this.footer() ).on( "keyup change clear", function () {
    25.             if ( that.search() !== this.value ) {
    26.                 that
    27.                     .search( this.value )
    28.                     .draw();
    29.             }
    30.         } );
    31.     } );
    32. } );
    И см., какие запросы при этом идут с клиента ;) Там данные по каждому столбцу передаются в POST-параметре columns.
    --- Добавлено ---
    https://datatables.net/manual/server-side
    https://datatables.net/examples/server_side/
     
    #8 miketomlin, 25 мар 2020
    Последнее редактирование: 25 мар 2020
    mixnet нравится это.