首頁  >  文章  >  後端開發  >  web用php怎麼實現搜尋功能

web用php怎麼實現搜尋功能

PHPz
PHPz原創
2023-03-29 11:34:431514瀏覽

PHP是一種廣泛應用於Web開發中的伺服器端腳本語言,它具有強大的功能和靈活性,能夠實現多種複雜的功能。其中,搜尋功能無疑是使用者最常用的功能之一,於是本文將介紹如何以PHP實現Web搜尋功能。

  1. 建立搜尋表單

在網站主頁面上新增一個搜尋表單,通常是一個簡單的文字方塊和一個搜尋按鈕。程式碼如下:

<form action="search.php" method="get">
  <input type="text" name="keyword" placeholder="搜索">
  <input type="submit" value="搜索">
</form>

其中,action屬性指定了表單提交時的處理檔案為search.phpmethod屬性指定了提交方式為get,也可以使用post方式。

  1. 處理搜尋請求

將搜尋請求提交至search.php檔案進行處理。程式碼如下:

<?php
// 获取提交的搜索关键词
$keyword = $_GET[&#39;keyword&#39;];

// 连接数据库
$conn = mysqli_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;password&#39;, &#39;database&#39;);

// 查询匹配的结果
$result = mysqli_query($conn, "SELECT * FROM articles WHERE title LIKE &#39;%$keyword%&#39; OR content LIKE &#39;%$keyword%&#39;");

// 处理查询结果
while ($row = mysqli_fetch_assoc($result)) {
  // 显示搜索结果
  echo $row[&#39;title&#39;];
  // ...
}

// 关闭数据库连接
mysqli_close($conn);
?>

首先,從$_GET資料裡取得關鍵字$keyword,然後連接資料庫,使用SELECT語句查詢匹配的結果。這個範例中是查詢了articles表中標題和內容出現關鍵字$keyword的所有文章。

最後,處理查詢結果並顯示在頁面上,記得最後關閉資料庫連線。

  1. 精確匹配搜尋

如果要實現精確匹配搜素,則將WHERE語句中的LIKE改為=即可。程式碼如下:

$result = mysqli_query($conn, "SELECT * FROM articles WHERE title = '$keyword'");
  1. 分頁顯示搜尋結果

當搜尋結果被查詢出來後,通常會將其顯示在多個頁面中。這時,就需要依照分割好的頁面條數來顯示相關搜尋結果。可以使用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=&#39;pagination&#39;>";
for ($i = 1; $i <= $pagecount; $i++) {
  if ($i == $page) {
    echo "<span class=&#39;current&#39;>$i</span>";
  } else {
    echo "<a href=&#39;search.php?keyword=$keyword&page=$i&#39;>$i</a>";
  }
}
echo "</div>";

首先,定義每頁顯示的條數和目前的頁碼。然後查詢符合的結果總條數併計算總頁數。最後,使用LIMIT語句對查詢結果進行分頁,並顯示分頁連結。其中,$start$limit參數用於控制查詢的起始位置和數量。

  1. 使用全文搜尋

除了在關鍵字中使用精確匹配或模糊匹配外,還可以使用全文搜尋來實現更精確的結果匹配。全文搜尋可以透過MySQL自帶的MATCHAGAINST語句來實現,使用方法如下:

$result = mysqli_query($conn, "SELECT * FROM articles WHERE MATCH(title, content) AGAINST('$keyword' IN NATURAL LANGUAGE MODE)");

關鍵字$keyword會被自動分詞,匹配titlecontent中任一個字段,最後按照匹配度進行排序並顯示結果。

以上就是用PHP實作Web搜尋功能的全部內容。透過以上步驟,我們可以快速為網站添加搜尋功能,提高網站的使用者體驗。

以上是web用php怎麼實現搜尋功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn