У меня есть раскрывающийся список выбора с возможностью поиска, и я хочу получить данные из таблицы инвентаризации, которая сейчас содержит более 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
Варианты выбора с возможностью поиска с помощью ajax ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1732617724
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
});
});
[b]и get_parts.php – это[/b]
$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]]); }
Подробнее здесь: [url]https://stackoverflow.com/questions/79226339/searchable-select-options-with-ajax[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия