#php #jquery #mysql
#php #jquery #mysql
Вопрос:
Я хочу поиск, подобный поиску в Google. Когда вы начнете вводить, в выпадающем списке будут перечислены предложения, поэтому я использовал автозаполнение. Моя проблема в том, что когда я набираю любой ключ, выводится сообщение «Результат не найден», хотя данные, которые я набираю, находятся в моей базе данных. Я проверяю свое подключение к базе данных и его правильность. Может кто-нибудь объяснить мне, что я делаю не так?
HTML
<input type="text" name="clientname" id="clientname" />
php
Эта часть отредактирована, я попробовал предложение @asik, но все еще не работает
filename:getautocomplete.php
if (isset($_REQUEST['term'])){
$return_arr = array();
$stmt = $con->prepare('SELECT * FROM client WHERE CLIENTNAME LIKE :term');
$stmt->execute(array('term' => '%'.$_GET['term'].'%'));
while($row = mysqli_fetch_assoc($stmt)) {
$return_arr[] = $row['CLIENTNAME'];
}
echo json_encode($return_arr);
}
else
{
echo 'ERROR: ' . $e->getMessage();
}
JavaScript
$(function() {
$("#clientname" ).autocomplete({
source: "getautocomplete.php"
});
});
заранее спасибо
Комментарии:
1. Я думаю, вы используете автозаполнение jquery. По умолчанию значение отображается в качестве параметра «term». таким образом, вы можете изменить $_REQUEST[‘имяклиента’] на $_REQUEST[‘term’]
2. Я меняю все имя клиента на term, а затем mysql_ * на mysqli. Но все еще не работает. Должен ли я поставить что-то перед оператором if? Спасибо
3. проверьте, что он отправляет
getautocomplete.php
, используяFirebug
илиChrome Deve Tool
Ответ №1:
попробуйте это, вам не хватает :
именованного параметра
$stmt = $con->prepare('SELECT CLIENTNAME FROM client WHERE CLIENTNAME LIKE :term');
$stmt->execute(array(':term' => '%'.$_REQUEST['term'].'%'));
Надеюсь, это сработает, если нет, вы можете попробовать форматировать ответ как label
amp; value
$return_arr[] = array('label' => $row['CLIENTNAME'], value => $row['CLIENTNAME']);
все еще не работает скриншот getautocomplete.php
ответа с использованием Firebug