JQuery UI autocomplete с PHP возвращает только целые слова


Я в мой первый проект с php + MySQL с input исследования слова, используя JQuery UI. Каждый учебник, который я сделал, показывают слова по мере того, как пользователь будет печатать, как substring. Так:

inserir a descrição da imagem aqui

Время '' подстроку , p, b ic etc...

Уже в моем коде не возникает, так. Он отображает только когда дает match в слово целиком.

, например, я начинаю, набрав: дкс и ничего не отображается. inserir a descrição da imagem aqui

, Только когда я заканчиваю, введя это слово появляется: inserir a descrição da imagem aqui

Хотел вывести все подстроки с минимум три буквы 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);

То, что я не в состоянии пройти?

Author: Luke Negreiros, 2020-10-14

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();

Размещать % на до и после фильтра, позволяет вам искать частей, которые могут быть в начале, в середине и в конце текста.

 2
Author: Jhonny Freire, 2020-10-14 16:11:01