首頁 >後端開發 >PHP問題 >php如何實作搜尋記錄

php如何實作搜尋記錄

PHPz
PHPz原創
2023-04-18 09:48:18682瀏覽

隨著網路的發展,搜尋引擎已成為了人們獲取資訊的重要管道之一。而在許多網站中也配備了自己的搜尋功能來幫助使用者快速找到需要的內容,其中PHP作為常用的程式語言,也可以實現搜尋記錄功能,為使用者提供更好的使用體驗。本文就將介紹PHP搜尋記錄的實作方法。

一、資料庫設計

首先要考慮的是資料庫的設計。在本文中,以MySQL為例進行介紹。

1.1 表的設計

需要建立一個表格來儲存使用者搜尋的記錄,包含以下欄位:

  1. id:記錄的唯一標識符,自動遞增
  2. keyword:使用者搜尋的關鍵字
  3. search_time:使用者搜尋的時間,格式為datetime
  4. user_id:使用者的唯一識別符,可為空

#表的架構如下:

CREATE TABLE search_history (
 id int(11) NOT NULL AUTO_INCREMENT,
  keyword varchar(255) NOT NULL DEFAULT '',
 search_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
 user_id int(11) DEFAULT NULL,# PRIMARY KEY (
id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

1.2 欄位說明

#在上面的表中,需要注意以下幾點:

    id為主鍵,自動遞增,用於唯一識別一筆記錄。
  1. keyword為使用者搜尋的關鍵字,不允許為空。
  2. search_time為搜尋發生的時間,格式為datetime類型,並設定預設值為目前時間,以便於記錄。
  3. user_id為使用者的唯一標識符,在某些場景下可以方便統計和分析使用者行為,但不是必要字段,所以可以為空。
二、記錄搜尋歷史

在頁面中,可以透過表單來實現使用者的搜尋功能,根據搜尋的內容,將其儲存到上面提到的search_history表中。具體代碼如下:

2.1 連接資料庫

首先需要連接資料庫,以便於將搜尋結果儲存到資料庫中。

$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');

if (!$conn) {

die("Connection failed: " . mysqli_connect_error());
}

mysqli_set_charset ($conn,"utf8mb4");

2.2 處理搜尋要求

#取得使用者在搜尋方塊中輸入的內容,例如:

$keyword = $_REQUEST[' keyword'];

如果使用者沒有輸入任何內容,則不需要將其儲存到資料庫中。

if (empty($keyword)) {

return;
}

#2.3 將搜尋結果儲存到資料庫

然後,將搜尋結果儲存到上述的search_history表中,以記錄使用者的搜尋記錄。

$sql = "INSERT INTO search_history (keyword, user_id) VALUES ('$keyword', 1)";

mysqli_query($conn, $sql);

#上述程式碼中,將搜尋的關鍵字和使用者的唯一識別碼(暫定為1)儲存到了search_history表中的keyword和user_id欄位中。

三、顯示搜尋歷史記錄

如果需要在網站中展示搜尋歷史,可以透過查詢資料庫中的search_history表格來取得。下面我們將介紹如何透過PHP來實現這個功能。

3.1 查詢資料庫

$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');

if (!$conn) {

die("Connection failed: " . mysqli_connect_error());
}

mysqli_set_charset($conn,"utf8mb4");

$sql = "SELECT * FROM search_history ORDER BY search_time DESC LIMIT 10";

$result = mysqli_query($conn , $sql);

上述程式碼先連接資料庫,並查詢search_history表中的所有記錄,依照時間倒序排列,取得最近的前10項記錄。

3.2 取得歷史記錄

接下來,透過循環遍歷所取得的記錄,將其輸出到頁面上。

if (mysqli_num_rows($result) > 0) {

while($row = mysqli_fetch_assoc($result)) {
    echo $row["keyword"];
}
} else {

echo "暂无搜索历史记录";
}

#上述程式碼首先判斷查詢結果是否為空,如果不為空則透過循環遍歷將每一筆記錄的關鍵字輸出到頁面上,如果為空則輸出提示訊息。

四、刪除搜尋記錄

如果使用者需要刪除某些搜尋歷史,可以透過在頁面上新增一個「刪除」按鈕,將需要刪除的記錄從資料庫中清除。

4.1 連接資料庫

與上述的操作相同,這裡不再贅述。

$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');

if (!$conn) {

die("Connection failed: " . mysqli_connect_error());
}

mysqli_set_charset ($conn,"utf8mb4");

4.2 處理刪除請求

#取得使用者需要刪除的記錄的id,並將其從資料庫中刪除。

$id = $_REQUEST['id'];

if (!empty($id)) {

$sql = "DELETE FROM search_history WHERE id='$id'";
mysqli_query($conn, $sql);
}

如果id為空,則不需要執行任何操作。

五、總結

透過以上的介紹,我們可以發現,PHP搜尋記錄的實現主要需要圍繞資料庫的設計來展開,透過在表中設定好相應的字段,將搜尋結果以及記錄時間儲存到資料庫中,方便查詢和展示。當然,需要注意安全性問題,避免SQL注入等攻擊。同時,如果需要更靈活地實現搜尋記錄功能,也可以使用其他技術,例如cookie、session等。

以上是php如何實作搜尋記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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