Форма поиска PHP / Javascript, возвращающая все строки вместо строк, соответствующих поисковому запросу

0

Я создал следующую форму поиска, ошибок нет, но вместо того, чтобы показывать строки, похожие на поисковый запрос, я просто получаю весь список строк из выбранной таблицы в базе данных, и я не Конечно, почему?

HTML

      <div class="form-horizontal">
          <fieldset>
            <legend>Search</legend>
            <div class="form-horizontal">
              <div class="col-sm-10">
                <input id="search-form" name="search" type="text" placeholder="Start searching here..." class="form-control">
              </div>
              <div class="col-sm-2">
                <button class="btn  btn-primary" id="searchButton" onclick="searchForm()">Search</button>
              </div>
            </div>
          </fieldset>
        </div>
        <br/>
        <table class="table" id="search-results" style="display:none;">
          <thead>
            <tr>
              <th>Name</th>
              <th>Serial</th>
              <th>Barcode</th>
            </tr>
          </thead>
          <tbody id="search-body">
          </tbody>
        </table>
      </div>

JS

function searchForm(){

   var d = $("#search-form").val();

   if(d != "") {
        $.ajax({ 
                 type: 'POST', 
                 url: 'http://www.test.co.uk/test/search.php', 
                 crossDomain: true,
                 data:  {data: d},
                 dataType: 'json', 
                 async: false,

                 success: function (response){ 
                    if (response.success) 
                        {


                           $('#search-results').show();


                            $.each(response.data, function( index, item ) {
                            $('#search-body').append('<tr><td>' + item.name + '</td><td>' + item.barcode + '</td><td>' + item.serial + '</tr>');
                        });


                        } 
                    else {
                        console.log("fail");
                    }
                 },

               }); 
    }
    else {
        alert("You must enter a term");
    }
    return false;
}

PHP

<?php
mysql_connect ("localhost", "root","")  or die (mysql_error());
mysql_select_db ("test");
$search = isset($_POST['search']) ? $_POST['search'] : '';

$sql = mysql_query("select * from asset where 
                         name like '%$search%' or 
                         barcode like '%$search%' or
                         serial like '%$search%' ");

$num = mysql_num_rows($sql);


    $json = array();
    if($num > 0)
    {

        $json['success'] = TRUE;

        while ($row = mysql_fetch_array($sql))
        {
              $json['data'][]=array('name'=>$row['name'], 'barcode'=>$row['barcode'], 'serial'=>$row['serial']);
        }
    }
    else
    {
        $json['success'] = FALSE;
    }

echo json_encode($json);
?>
  • 0
    проверьте ваш запрос и запустите его на сервере sql, чтобы убедиться, что у вас правильный запрос.
  • 0
    только что проверил и работает нормально
Теги:
forms
search

2 ответа

1
Лучший ответ

Измените код jquery

   data:{search: d}

Объяснение: Вы отправляли поисковый запрос через ajax с data имени. Но в php вы проверяете

 isset($_post['search'])

Либо вы меняете свой код jquery, либо меняете php

isset($_post['data'])
0

Измените имя участника в JQuery из данных в Search.

    data:  {search: d},

Потому что вы отправляете "данные" участника и ищете "поиск".

Это хорошо работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню