Я пытаюсь использовать демонстрацию поиска в реальном времени, которую я нашел в сети, используя php, ajax и json, и хотел бы внести небольшие изменения в код, чтобы попросить пользователя быть «более конкретным» в запросе, чтобы не запрашивать всю базу данных.
Я бы хотел ограничить запрос на возврат не более чем 50 записями, и если в запросе есть больше, чтобы уведомить пользователя.
Вот источник, который я пытаюсь изменить (https://howtodecode.com/php/how-to-create-php-live-search-with-ajax-for-website/).
В приведенном ниже коде я пытался изменить json, но я не знаю, как его реализовать, поэтому я борюсь с тем, где находится ошибка в моем коде.
Я вижу следующее в ОТВЕТЕ "{" F_NAME ":" ... пожалуйста, сузьте область поиска, слишком много записей для отображения. "," L_NAME ":" "}". Кажется, это правильно, но я не могу его правильно проанализировать.
Я получаю «Данные не найдены».
<?php
require_once('../TestSearch/Connections/Shop.php');
//fetch.php
$query = '';
if(isset($_POST["query"]))
{
$search = str_replace(",", "|", $_POST["query"]);
$query = "
SELECT F_NAME, L_NAME, JOB_NO, CUST_NO, DESCRIPTIN, JOB_TYPE FROM line_job
WHERE F_NAME REGEXP '".$search."'
OR L_NAME REGEXP '".$search."'
OR JOB_NO REGEXP '".$search."'
OR CUST_NO REGEXP '".$search."'
OR DESCRIPTIN REGEXP '".$search."'
OR JOB_TYPE REGEXP '".$search."'
";
}
else
{
$query = "
SELECT F_NAME, L_NAME, JOB_NO, CUST_NO, DESCRIPTIN, JOB_TYPE FROM line_job WHERE line_job = 47779
";
}
$result = $mysqli -> query($query);
if(mysqli_num_rows($result) > 50)
{
$data = ['F_NAME' => '...please narrow your seach, too many records to display.','L_NAME' => ''];
echo json_encode($data);
}else{
while($row = mysqli_fetch_array($result))
{
$data[] = $row;
}
echo json_encode($data);
}
?>
а вот и сценарий
<script>
$(document).ready(function(){
load_data();
function load_data(query)
{
$.ajax({
url:"fetch.php",
method:"POST",
data:{query:query},
dataType:"json",
success:function(data)
{
$('#total_records').text(data.length);
var html = '';
if(data.length > 0)
{
for(var count = 0; count < data.length; count++)
{
html += '<tr>';
html += '<td>'+data[count].F_NAME+'</td>';
html += '<td>'+data[count].L_NAME+'</td>';
html += '<td>'+data[count].JOB_NO+'</td>';
html += '<td>'+data[count].CUST_NO+'</td>';
html += '<td>'+data[count].DESCRIPTIN+'</td>';
html += '<td>'+data[count].JOB_TYPE+'</td></tr>';
}
}
else
{
html = '<tr><td colspan="5">No Data Found</td></tr>';
}
$('tbody').html(html);
}
})
}
$('#search').click(function(){
var query = $('#tags').val();
load_data(query);
});
});
</script>