搜尋只包含提交的搜尋輸入值的結果。
P粉541551230
2023-07-25 09:17:02
<p>嗨,如果可能的話,我很樂意幫你處理搜尋腳本。 </p><p>我有一個搜尋功能,使用三種類型的搜尋輸入從資料庫中檢索有關車輛的數據,並使用一個提交按鈕。 </p><p>輸入1:選項清單搜尋(searcha)</p><p>輸入2:文字搜尋(searchb)</p><p>輸入3:兩個單選按鈕選擇搜尋(可以選擇一個或兩個按鈕)</p><p>還有一個提交按鈕。 </p><p>當我提交搜尋時,以下PHP程式碼會運行。它會顯示結果,但只有當與資料庫中的第一個正確結果相符時才會顯示。我希望它能夠搜尋只包含提交的搜尋輸入值的結果。 </p><p>例如,如果我從輸入1選擇一個選項,從輸入3選擇一個單選按鈕,搜尋應該只找到包含這兩個值的行(如果這樣說得通的話)。 </p><p><br /></p>
<pre class="brush:php;toolbar:false;"><?
// Vehicles
if (in_array($_POST['searcha'], $search_a_option_list)) {
$stmt = $pdo->prepare('SELECT * FROM coun WHERE inth = ?');
$stmt->execute([ $_POST['searcha'] ]);
$search_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else if ($_POST['searchb']) {
$stmt = $pdo->prepare('SELECT * FROM coun WHERE bunty LIKE ?');
$stmt->execute([ '%' . $_POST['searchb'] . '%' ]);
$search_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else if (isset($_POST['radio1'], $_POST['radio2'])) {
$stmt = $pdo->prepare('SELECT * FROM coun WHERE ref = ? OR ref1 = ?');
$stmt->execute([ 'In', 'On' ]);
$search_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else if (isset($_POST['radio1'])) {
$stmt = $pdo->prepare('SELECT * FROM coun WHERE ref = ?');
$stmt->execute([ 'In' ]);
$search_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else if (isset($_POST['radio2'])) {
$stmt = $pdo->prepare('SELECT * FROM coun WHERE ref1 = ?');
$stmt->execute([ 'On' ]);
$search_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
$error = 'No options selected!';
}
?></pre>
<p>有沒有簡單的方法來調整這個腳本以反映輸入的搜尋?我剛開始學習PHP,所以一個正確的指引會非常完美。謝謝。 </p><p><br /></p>
首先,我不懂如何同時選擇兩個單選按鈕,你是指複選框嗎?關於你的問題 - 無論如何,你應該執行一個查詢,但根據你的$_POST值構建它
可能是這樣的: