如何使用搜索框引导程序处理下拉列表中的大数据

时间:2018-05-24 07:05:21

标签: php mysqli bootstrap-grid

我的网页中有一个带有搜索文本框的引导程序下拉列表。我将动态数据添加到该下拉列表中,但它们很大并且来自数据库。这就是为什么加载需要很长时间。有谁知道这个问题的解决方案?

<select data-live-search="true" name="paymentfacility" id="paymentfacility" data-live-search-style="startsWith" class="selectpicker">
    <?php 
    foreach($facilitiesall as $val)
    {?>
        <option value="<?php echo $val['Facility']['id']; ?>"> 
           <?php echo $val['Facility']['name']; ?>
        </option>
    <?php } ?>
</select>

1 个答案:

答案 0 :(得分:0)

如果您不介意将 选择字段 更改为 输入文本字段 ,我使用此脚本:它是一个自动完成库,可在输入字段下方创建一个列表。它调用一个php文件搜索我正在寻找的内容,因此你不会加载所有数据库..

https://github.com/jhonis/bootcomplete

JS

$('#inputText').bootcomplete({
   url: 'search.php',
   method: 'post',
   minLength: 2
});

PHP

$txt = $_POST['query'];

$helper = new PDO(CONNECTION_DNS, CONNECTION_USER, CONNECTION_PWD);
$helper->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// YOU MUST HAVE id AND label AS RETURN DATA
$stmt = $helper->prepare('SELECT P.Id as id, P.Code as label FROM TABLE_NAME WHERE Code LIKE :Query');
$stmt->bindValue(':Query', '%'.$txt.'%', PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

print json_encode($results);