本文將介紹如何使用PHP和數(shù)據(jù)庫(kù)實(shí)現(xiàn)一個(gè)模糊搜索功能,并將搜索結(jié)果以下拉選擇列表的形式呈現(xiàn)給用戶(hù)。
假設(shè)我們有一個(gè)用戶(hù)表,包含姓名和年齡兩個(gè)字段。現(xiàn)在我們希望用戶(hù)可以通過(guò)輸入姓名的一部分來(lái)搜索對(duì)應(yīng)的用戶(hù),并從搜索結(jié)果中選取一個(gè)用戶(hù)進(jìn)行進(jìn)一步操作。
首先,我們需要在前端創(chuàng)建一個(gè)輸入框供用戶(hù)輸入搜索關(guān)鍵字。然后,我們使用Ajax實(shí)現(xiàn)實(shí)時(shí)搜索并將結(jié)果返回給前端。在后端,我們需要編寫(xiě)PHP代碼來(lái)查詢(xún)數(shù)據(jù)庫(kù),根據(jù)用戶(hù)輸入的關(guān)鍵字模糊匹配用戶(hù)的姓名。最后,我們將查詢(xún)結(jié)果以下拉選擇列表的形式返回給前端。
下面是前端代碼:
<html> <head> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <input type="text" id="search" placeholder="請(qǐng)輸入搜索關(guān)鍵字" /> <select id="users"></select> <script> $(document).ready(function(){ $('#search').keyup(function(){ var keyword = $(this).val(); $.ajax({ url: 'search.php', type: 'POST', data: {keyword: keyword}, success: function(response){ $('#users').html(response); } }); }); }); </script> </body> </html>
在這段代碼中,我們使用了一個(gè)文本輸入框和一個(gè)空的下拉選擇列表。當(dāng)用戶(hù)在輸入框中輸入關(guān)鍵字時(shí),通過(guò)keyup事件觸發(fā)Ajax請(qǐng)求。請(qǐng)求發(fā)送到search.php文件,并將用戶(hù)輸入的關(guān)鍵字作為POST參數(shù)傳遞。
接下來(lái),我們來(lái)編寫(xiě)search.php文件的后端代碼:
<?php // 獲取用戶(hù)輸入的關(guān)鍵字 $keyword = $_POST['keyword']; // 連接數(shù)據(jù)庫(kù) $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database"; $conn = new mysqli($servername, $username, $password, $dbname); // 查詢(xún)數(shù)據(jù)庫(kù) $sql = "SELECT * FROM users WHERE name LIKE '%$keyword%'"; $result = $conn->query($sql); // 構(gòu)建下拉選擇列表的選項(xiàng) $options = ""; if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $name = $row['name']; $id = $row['id']; $options .= "<option value='$id'>$name</option>"; } } // 返回下拉選擇列表的選項(xiàng) echo $options; // 關(guān)閉數(shù)據(jù)庫(kù)連接 $conn->close(); ?>
在這段代碼中,我們首先獲取到前端傳遞過(guò)來(lái)的關(guān)鍵字。然后,連接到數(shù)據(jù)庫(kù),并執(zhí)行查詢(xún)語(yǔ)句。查詢(xún)結(jié)果中的每一行都被轉(zhuǎn)換成一個(gè)下拉選擇列表的選項(xiàng),存儲(chǔ)在$options變量中。最后,我們將$options返回給前端,讓前端將其添加到下拉選擇列表中。
通過(guò)以上代碼,當(dāng)用戶(hù)在輸入框中輸入關(guān)鍵字時(shí),將會(huì)實(shí)時(shí)顯示搜索結(jié)果。用戶(hù)可以從下拉選擇列表中選擇一個(gè)用戶(hù),進(jìn)一步操作。例如,用戶(hù)輸入"張"時(shí),下拉選擇列表會(huì)顯示所有姓名包含"張"的用戶(hù),例如"張三"、"張四"等。
通過(guò)本文的示例,我們可以看到PHP input模糊搜索數(shù)據(jù)庫(kù)下拉選擇的實(shí)現(xiàn)原理,并將其應(yīng)用到自己的項(xiàng)目中,提升用戶(hù)的搜索體驗(yàn)。