Здравствуйте друзья. Имеется инпут
<input type="text" name="incoming_sender" id="incoming_sender" class="form-control">
Имеется JS код
<script type="text/javascript">
$(document).ready(function() {
$( "#incoming_sender" ).autocomplete({
source: 'autocomplete.php'
});
});
</script>
И PHP файл autocomplete.php который генерирует варианты для автозаполнения инпута со следующим содержанием :
require_once ('includes/connect.php') ;
$result = mysqli_query($con,"SELECT * FROM usertbl") or die(mysqli_error());
while($row = mysqli_fetch_assoc( $result )) {
$data[] = $row['full_name'];
}
echo json_encode($data);
Варианты для автозаполнения инпута с именами отправителей берутся из БД. Но проблема в том, что когда пользователь начинает ввод букв или символов в инпут, там отображаются все данные из БД, а не только те в которых есть совпадение с веденным символом. Например из базы вытаскиваются имена 'Сергей', 'Алексей'. Если ввести какую-нибудь цифру, знак препинания или буквы, которых нет в именах, то он все равно отображает все имена. Как это исправить ?
PS: Такой вариант работает без проблем:
<script>
$(document).ready(function() {
$("#incoming_sender").autocomplete({
source: [
"Сергей",
"Алексей",
"Игорь",
],
minLength: 1
});
});
</script>
В вашем файле autocomplete.php в запросе нужно учитывать то, что пользователь уже ввёл:
require_once ('includes/connect.php') ;
$term = mysqli_real_escape_string($con, $_GET['term']);
$result = mysqli_query($con, "SELECT * FROM usertbl WHERE full_name LIKE '%".$term."%'") or die(mysqli_error());
while($row = mysqli_fetch_assoc($result)) {
$data[] = $row['full_name'];
}
echo json_encode($data);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей