PHP是一種廣泛應用於Web開發中的伺服器端腳本語言,它具有強大的功能和靈活性,能夠實現多種複雜的功能。其中,搜尋功能無疑是使用者最常用的功能之一,於是本文將介紹如何以PHP實現Web搜尋功能。
在網站主頁面上新增一個搜尋表單,通常是一個簡單的文字方塊和一個搜尋按鈕。程式碼如下:
<form action="search.php" method="get"> <input type="text" name="keyword" placeholder="搜索"> <input type="submit" value="搜索"> </form>
其中,action
屬性指定了表單提交時的處理檔案為search.php
,method
屬性指定了提交方式為get
,也可以使用post
方式。
將搜尋請求提交至search.php
檔案進行處理。程式碼如下:
<?php // 获取提交的搜索关键词 $keyword = $_GET['keyword']; // 连接数据库 $conn = mysqli_connect('localhost', 'root', 'password', 'database'); // 查询匹配的结果 $result = mysqli_query($conn, "SELECT * FROM articles WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'"); // 处理查询结果 while ($row = mysqli_fetch_assoc($result)) { // 显示搜索结果 echo $row['title']; // ... } // 关闭数据库连接 mysqli_close($conn); ?>
首先,從$_GET
資料裡取得關鍵字$keyword
,然後連接資料庫,使用SELECT
語句查詢匹配的結果。這個範例中是查詢了articles
表中標題和內容出現關鍵字$keyword
的所有文章。
最後,處理查詢結果並顯示在頁面上,記得最後關閉資料庫連線。
如果要實現精確匹配搜素,則將WHERE
語句中的LIKE
改為=
即可。程式碼如下:
$result = mysqli_query($conn, "SELECT * FROM articles WHERE title = '$keyword'");
當搜尋結果被查詢出來後,通常會將其顯示在多個頁面中。這時,就需要依照分割好的頁面條數來顯示相關搜尋結果。可以使用PHP的LIMIT
語句對查詢結果進行分頁處理。程式碼如下:
// 分页每页显示的条数 $pagesize = 10; // 当前页码 $page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 查询总记录数 $count_result = mysqli_query($conn, "SELECT COUNT(*) AS count FROM articles WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'"); $count_row = mysqli_fetch_assoc($count_result); $count = $count_row['count']; // 计算总页数 $pagecount = ceil($count / $pagesize); // 分页查询 $start = ($page - 1) * $pagesize; $limit = "$start, $pagesize"; $result = mysqli_query($conn, "SELECT * FROM articles WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%' LIMIT $limit"); // 处理查询结果 // ... // 显示分页链接 echo "<div class='pagination'>"; for ($i = 1; $i <= $pagecount; $i++) { if ($i == $page) { echo "<span class='current'>$i</span>"; } else { echo "<a href='search.php?keyword=$keyword&page=$i'>$i</a>"; } } echo "</div>";
首先,定義每頁顯示的條數和目前的頁碼。然後查詢符合的結果總條數併計算總頁數。最後,使用LIMIT
語句對查詢結果進行分頁,並顯示分頁連結。其中,$start
和$limit
參數用於控制查詢的起始位置和數量。
除了在關鍵字中使用精確匹配或模糊匹配外,還可以使用全文搜尋來實現更精確的結果匹配。全文搜尋可以透過MySQL自帶的MATCH
和AGAINST
語句來實現,使用方法如下:
$result = mysqli_query($conn, "SELECT * FROM articles WHERE MATCH(title, content) AGAINST('$keyword' IN NATURAL LANGUAGE MODE)");
關鍵字$keyword
會被自動分詞,匹配title
和content
中任一個字段,最後按照匹配度進行排序並顯示結果。
以上就是用PHP實作Web搜尋功能的全部內容。透過以上步驟,我們可以快速為網站添加搜尋功能,提高網站的使用者體驗。
以上是web用php怎麼實現搜尋功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!