То, что я хочу сделать, это классифицировать результаты с помощью автозаполнения через функцию jQueryUI. После некоторого поиска в Google и т.д. я обнаружил, что он имеет встроенную функцию (http://jqueryui.com/demos/autocomplete/#categories), но пример только для локального источника данных (массив в javascript). Я имею дело с удаленным источником данных.
Мой код
<script>
$( function() {
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function(ul, items) {
var self = this,
currentCategory = "";
$.each(items, function(index, item) {
if (item.category != currentCategory) {
ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
currentCategory = item.category;
}
self._renderItem(ul, item);
});
}
});
$( "#search" ).catcomplete({
delay:0,
source: "search.php",
select: function(event, ui){
alert(ui.item.label);
}
});
} );
</script>
</head>
<body>
<label for="search">Search: </label>
<input id="search">
</body>
здесь search.php
<?php
$conn = mysqli_connect("localhost","root","","test") or die(mysqli_error());
$searchTerm = $_GET['term'];
$sql = "select * from country_ref_table where country_code LIKE '%".$searchTerm."%' ORDER BY country_code ASC";
$result = mysqli_query($conn,$sql) or die(mysqli_error($conn));
$data = [];
while($row = mysqli_fetch_array($result))
{
$data[] = $row['country_code'];
$data[] = $row['country'];
}
echo json_encode($data);
?>
Вместо:
$searchTerm = $_GET['term'];
$sql = "select * from country_ref_table";
Вы должны включить $searchTerm
в вашем запросе, вроде как:
$searchTerm = $_GET['term'];
$sql = "select * from country_ref_table WHERE `columnTerm` LIKE '%".$searchTerm ."%' ";
ИЛИ ЖЕ
$sql = "select * from country_ref_table WHERE `columnTerm` = '$searchTerm' ";
$searchTerm = $_GET['term'];
$sql = "select * from country_ref_table";
добавить его в $ sql
$sql = "select * from country_ref_table where `term` LIKE '%".$searchTerm ."%'";
тогда используйте данные как это:
$data=array();
while($row = mysqli_fetch_array($result))
{
$data[]['id'] = $row['country_code'];
$data[]['category'] = $row['country'];
}
echo json_encode($data);