如何通过搜索 MySQL 数据库创建下拉菜单

How do I create a dropdown menu with a search for MySQL database

我想创建一个带有搜索选项的 select 框,就像 this 但该选项来自我的数据库。

我目前的代码

<form name="form1" action="" method="post">                            
<table>
    <tr>                                    
        <td>
            <select name="id" class="form-control selectpicker">
                <?php
                $res=mysqli_query ($link,"select id, nama from peminjaman");
                while ($row = mysqli_fetch_array($res)) 
                {
                    echo "<option>";
                    echo $row["id"].". " .$row["nama"];
                    echo "</option>";
                }
                ?>
            </select>
        </td>

试试这个。

function myFunction() {
  document.getElementById("myDropdown").classList.toggle("show");
}

function filterFunction() {
  var input, filter, ul, li, a, i;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  div = document.getElementById("myDropdown");
  a = div.getElementsByTagName("a");
  for (i = 0; i < a.length; i++) {
    txtValue = a[i].textContent || a[i].innerText;
    if (txtValue.toUpperCase().indexOf(filter) > -1) {
      a[i].style.display = "";
    } else {
      a[i].style.display = "none";
    }
  }
}
.dropbtn {
  background-color: #04AA6D;
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}

.dropbtn:hover, .dropbtn:focus {
  background-color: #3e8e41;
}

#myInput {
  box-sizing: border-box;
  background-image: url('searchicon.png');
  background-position: 14px 12px;
  background-repeat: no-repeat;
  font-size: 16px;
  padding: 14px 20px 12px 45px;
  border: none;
  border-bottom: 1px solid #ddd;
}

#myInput:focus {outline: 3px solid #ddd;}

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f6f6f6;
  min-width: 230px;
  overflow: auto;
  border: 1px solid #ddd;
  z-index: 1;
}

.dropdown-content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}

.dropdown a:hover {background-color: #ddd;}

.show {display: block;}
<div class="dropdown">
  <button onclick="myFunction()" class="dropbtn">Dropdown</button>
  <div id="myDropdown" class="dropdown-content">
    <input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
    <a href="#about">About</a>
    <a href="#base">Base</a>
    <a href="#blog">Blog</a>
    <a href="#contact">Contact</a>
    <a href="#custom">Custom</a>
    <a href="#support">Support</a>
    <a href="#tools">Tools</a>
  </div>
</div>

您这样做的方式假设您在数据库中有大量数据,并且您希望在每次加载页面时都加载它们。那会减慢一切。您应该采用 AJAX 的工作方式。而且它已经用 select2 jquery 插件完成了。这是 link。

https://select2.org/data-sources/ajax

api已经完成了很多事情。您只需将数据编码为 JSON。其实从这里开始比较好

https://select2.org/data-sources