搜尋只包含提交的搜尋輸入值的結果。
P粉541551230
P粉541551230 2023-07-25 09:17:02
0
1
557
<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>
P粉541551230
P粉541551230

全部回覆(1)
P粉930534280

首先,我不懂如何同時選擇兩個單選按鈕,你是指複選框嗎?關於你的問題 - 無論如何,你應該執行一個查詢,但根據你的$_POST值構建它

可能是這樣的:


// make an empty array to hold all the conditions
$whereValues = [];

// populate the array with conditions
if (in_array($_POST['searcha'], $search_a_option_list)) {
    $whereValues[] = "inth = '$_POST[searcha]'";
} else if ($_POST['searchb']) {
    $whereValues[] = "bunty LIKE '%$_POST[searchb]%'"
} else if (isset($_POST['radio1'], $_POST['radio2'])) {
    $whereValues[] = "ref = 'In' OR ref1 = 'On'"
} else if (isset($_POST['radio1'])) {
    $whereValues[] = "ref = 'In'"
} else if (isset($_POST['radio2'])) {
    $whereValues[] = "ref1 = 'On'"
} 

// if we have something then build the result string of `WHERE` conditions
if ($whereValues) {
    $where = implode(' AND ', $whereValues);
    $stmt = $pdo->prepare("SELECT * FROM coun WHERE $where");
    $stmt->execute();
    $search_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
    $error = 'No options selected!';
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板