建立允許使用者輸入多個參數的搜尋表單時,重要的是要考慮搜尋結果將如何被過濾。
在提供的範例中,搜尋表單具有單獨的 ID、姓名、專業和大學輸入欄位。然後,results.php 檔案使用單獨的 if/elseif 語句分別處理每個參數。
但是,為了讓使用者輸入一個或多個參數,需要更動態的方法。這可以透過根據輸入的參數動態建立 SQL 查詢的 WHERE 子句來實現。
這裡是 results.php 檔案的修訂版本,示範了這個方法:
<?php $wheres = array(); $params = array(); if (!empty($_GET['id'])) { $wheres[] = 'a.uid = :uid'; $params[':uid'] = $_GET['id']; } if (!empty($_GET['major'])) { $wheres[] = 'a.major = :major'; $params[':major'] = $_GET['major']; } if (!empty($_GET['name'])) { $wheres[] = 'b.name LIKE :name'; $params[':name'] = '%'.$_GET['name'].'%'; } $sql = "SELECT * FROM user_details AS a JOIN user AS b ON a.uid = b.id"; if (!empty($wheres)) { $sql .= " WHERE " . implode(' AND ', $wheres); } $stmt = $db->prepare($sql); $stmt->execute($params); while ($student = $stmt->fetch()) { echo ' <tr> <td>'.$student['uid'].'</td> <td>'.$student['name'].'</td> <td>'.$student['major'].'</td> <td>'.$student['college'].'</td> <td><a href="?m=profile&id='.$student['id'].'">
此程式碼根據輸入的參數動態建立 WHERE 子句。如果使用者僅輸入名稱,則查詢將僅按名稱過濾。如果使用者同時輸入姓名和專業,則查詢將按這兩個參數進行篩選。
這種方法可以提供更靈活和用戶友好的搜尋體驗。
以上是如何在 PHP 中建立具有多個參數的動態搜尋表單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!