Варианты выбора с возможностью поиска с помощью ajaxPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Варианты выбора с возможностью поиска с помощью ajax

Сообщение Anonymous »

У меня есть раскрывающийся список выбора с возможностью поиска, и я хочу получить данные из таблицы инвентаризации, которая сейчас содержит более 20 000 записей. Раньше я использовал базовый PHP и SQL для отображения данных, когда в инвентаре было менее 2000 записей, и это работало нормально. Однако по мере роста инвентаря я перешел на использование AJAX для повышения производительности, но он работает не так, как ожидалось. Не могли бы вы помочь мне определить, в чем может быть проблема?


Select Parts...

Select Customer


$(document).ready(function () {
// Initialize Select2 with AJAX
$('#select2Basicc').select2({
placeholder: 'Select Parts...',
ajax: {
url: 'get_parts.php', // Backend script to fetch data
type: 'GET',
dataType: 'json',
delay: 250, // Delay for better performance
data: function (params) {
return {
search: params.term, // Search term
page: params.page || 1 // Pagination
};
},
processResults: function (data) {
return {
results: data.items, // Items to display
pagination: {
more: data.pagination.more // Enable "Load More"
}
};
},
cache: true
},
minimumInputLength: 2 // Trigger search after 2 characters
});
});

и get_parts.php – это
$search = $_GET['search']; $page = (int)($_GET['page']); $limit
= 10; $offset = ($page - 1) * $limit;
try {
$stmt = $conn_account_db->prepare("SELECT item_code FROM inventory WHERE item_code LIKE ? LIMIT ? OFFSET ?");
$likeSearch = "%$search%";
$stmt->bind_param("sii", $likeSearch, $limit, $offset);
$stmt->execute();
$result = $stmt->get_result();
$items = [];
while ($row = $result->fetch_assoc()) {
$items[] = [
'id' => $row['item_code'], // Value for the option
'text' => $row['item_code'] // Text to display
];
}
$stmt = $conn_account_db->prepare("SELECT COUNT(*) as total FROM inventory WHERE item_code LIKE ?");
$stmt->bind_param("s", $likeSearch);
$stmt->execute();
$totalResult = $stmt->get_result()->fetch_assoc();
$total = $totalResult['total'];
$more = ($offset + $limit) < $total;
echo json_encode([
'items' => $items,
'pagination' => ['more' => $more]
]);} catch (Exception $e) {
echo json_encode(['items' => [], 'pagination' => ['more' => false]]); }


Подробнее здесь: https://stackoverflow.com/questions/792 ... -with-ajax
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»