JQuery UI autocomplete с PHP возвращает только целые слова
Я в мой первый проект с php + MySQL с input исследования слова, используя JQuery UI. Каждый учебник, который я сделал, показывают слова по мере того, как пользователь будет печатать, как substring
. Так:
Время '' подстроку , p, b ic etc...
Уже в моем коде не возникает, так. Он отображает только когда дает match в слово целиком.
, например, я начинаю, набрав: дкс и ничего не отображается.
, Только когда я заканчиваю, введя это слово появляется:
Хотел вывести все подстроки с минимум три буквы minLength: 3
. То, что я не в состоянии пройти?
Мой код index.php
:
<input type="text" name="word" class="j_autocomplete" id="word_input">
(...)
// com o script lá embaixo
<script type="text/javascript">
$(function() {
// autocomplete
$(".j_autocomplete").autocomplete({
source: 'src/search.php',
minLength: 3
});
});
</script>
search.php
вот так:
<?php
require('../config.php'); // conexão com o 'db' funcionando!
$return_arr = array();
$userInput = $_GET['term'];
$search = $mysql->prepare('SELECT * FROM `palavras` WHERE `palavra` LIKE ? ORDER BY palavra ASC');
$search->bind_param('s', $userInput);
$search->execute();
$getResult = $search->get_result();
while ($row = $getResult->fetch_assoc()) :
$return_arr[] = $row['palavra'];
endwhile;
echo json_encode($return_arr);
То, что я не в состоянии пройти?
1 answers
, если вы используете оператор LIKE для поиска по части текста вы должны сообщить, 'джокер', в случае с MySQL, и в большинстве реляционные базы данных вы можете использовать % как джокер.
Например, чтобы найти мое имя, используя like, я мог бы использовать:
SELECT * FROM cliente WHERE nome LIKE 'JHO%'
MySQL будет интерпретировать это выражение, чтобы вернуть всех клиентов, где в поле " имя начинается с 'JHO', который может быть ДЖОННИ, JHONY, JHON.
В Этом случае, вы можете сделать запрос два способы:
$search = $mysql->prepare("SELECT * FROM `palavras` WHERE `palavra` LIKE '%?%' ORDER BY palavra ASC");
$search->bind_param('s', $userInput);
$search->execute();
,
$search = $mysql->prepare('SELECT * FROM `palavras` WHERE `palavra` LIKE ? ORDER BY palavra ASC');
$search->bind_param('s','%' . $userInput . '%');
$search->execute();
Размещать % на до и после фильтра, позволяет вам искать частей, которые могут быть в начале, в середине и в конце текста.