搜索只包含提交的搜索输入值的结果。
P粉541551230
P粉541551230 2023-07-25 09:17:02
0
1
482
<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!';
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!