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