Получить данные из MySQL с автозаполнением

Я пытаюсь получить данные из базы данных MySQL без обновления моей страницы. Чтобы получить данные от пользователя, я использую livesearch также из той же базы данных. Когда я нажимаю кнопку, я хочу показать данные строки в базе данных, которые пользователь ввел. Моя проблема с php, когда я нажимаю кнопку для вывода закодированного результата, вывод «null», и я не могу понять, почему он говорит это, потому что я выбираю значения из базы данных.

Раннее спасибо за вашу помощь 🙂

Вот мой код:

HTML:

<h1>LIVE SEARCH WITH AJAX TEST</h1>
<div class="ui-widget">
<label for="recherche">Recherche: </label>
<input id="recherche" name="recherche">
<button name="button" id="button">OK</button>
</div>
<br>
<div id="namedata"></div>

JQuery:

$(document).ready(function(){
$('#button').on('click', function(){
var recherche = $('#recherche').val();
if ($.trim(recherche) != ''){
$.post('getvalue.php', {recherche: recherche}, function(data){
$('#namedata').text(data);
});
}
});
});

PHP:

<?php

if (isset($_POST['recherche']) === true && empty($_POST['recherche']) === false) {
require 'connect.php';
$query = mysql_query("SELECT capacityingo FROM smartphone WHERE name ='" . mysql_real_escape_string(trim($_POST['recherche'])) . "' ");
$row = mysql_fetch_array($query);
echo json_encode($row);
}

-1

Решение

Я полагаю, что ошибка была в вашем PHP-скрипте, хотя, поскольку у меня PHP7.1, я не смог проверить его, чтобы увидеть, где была ошибка.
Я надеюсь, что этот код работает для вас. Я добавил обработку ошибок, так как в вашем коде этого не было.

<?php

if (isset($_POST['recherche']))
{
if (empty($_POST['recherche']))
{
exit();
}

//sanitize string entering db
$recherche = filter_input(INPUT_POST, 'recherche', FILTER_SANITIZE_STRING);
$recherche = filter_var($recherche, FILTER_SANITIZE_SPECIAL_CHARS);

//mysqli connection
$mysqli = new mysqli('localhost', 'root', '', 'test');

//statement with FALSE return error handling
if (!$stmt = $mysqli->prepare("SELECT capacityingo FROM smartphone WHERE name = ?"))
{
//throw error
// trigger_error('The statement could not be prepared', E_USER_ERROR);
//or (to be readable by javascript)
$error = array
(
'error' => 'The statement could not be prepared'
);

echo json_encode($error);
exit();
}

$stmt->bind_param('s', $recherche);

//execute with error handling
if (!$stmt->execute())
{
//throw error
// trigger_error('The statement could not be executed', E_USER_ERROR);
//or (to be readable by javascript)
$error = array
(
'error' => 'The statement could not be executed'
);

echo json_encode($error);
exit();
}

//make statement output to result
$res = $stmt->get_result();
$data = array();
while ($row = $res->fetch_assoc())
{
//add each result to an array
$data[] = $row;
//if this does not work try
// array_push ($data, $row);
}
//print the array encoded in JSON
echo json_encode($data);
}

ОБНОВИТЬ
Если вы хотите создать окно поиска автозаполнения, вы должны учитывать часть «автозаполнение», поскольку каждый раз, когда пользователь вводит что-то в поле поиска, он обновляет его. Примерно так в вашем JS:

$(document).ready(function(){
$('#recherche').on('input', function(){ /* in place of your button i put your input and checked for it's update - and don't forget to make a copy of this for your search button too, I don't wanna make this update too long */
var recherche = $('#recherche').val();
if ($.trim(recherche) != ''){
$.post('search.php', {'recherche': recherche}, function(data){
$('#namedata').text(data);
});
}
});
});

Также для поисковой системы не следует использовать = оператор в вашем заявлении. Вы должны использовать SQL LIKE оператор и поместите ваш поисковый запрос в PHP следующим образом:

$recherche = '%'. $recherche .'%';

Ведь санирующие и убегающие персонажи сверху SQL заявление.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector