PHP - 两个多选下拉菜单,将用户选择传递给 MySQL 查询

标签 php mysql drop-down-menu

编辑:

下拉菜单中列出了以下内容:

打字类(class) 日常营销类(class)

当使用下面的代码将下拉列表中的选定文本添加到 MySQL 语句中时,只会出现第一个单词,即。 'Typing' 和 'Daily',代码如下所示:

SELECT * FROM `acme` WHERE `course` IN('Typing', 'Daily')AND `date` IN('2010-08-27', '2010-08-31')

应该是这样的:

SELECT * FROM `acme` WHERE `course` IN('Typing Course', 'Daily Marketing Course')AND `date` IN('2010-08-27', '2010-08-31')

原始问题如下:

大家好

好的,我会尽力解释我想做什么。

我有两个下拉菜单设置为多个,第一个是类(class),第二个是日期,这是填充每个下拉菜单的代码:

类(class)

echo "<select name='course' value='' multiple='multiple'>";
            // printing the list box select command
            echo "<option value=''>All</option>";
            while($ntc=mysqli_fetch_array($queryc)){//Array or records stored in $nt
            echo "<option value=$ntc[course]>$ntc[course]</option>";
            /* Option values are added by looping through the array */
            }
            echo "</select>";// Closing of list box 

日期

echo "<select name='date' value='' multiple='multiple'>";
        // printing the list box select command
        echo "<option value=''>All</option>";
        while($nt=mysqli_fetch_array($queryr)){//Array or records stored in $nt
        echo "<option value=$nt[dates]>$nt[dates]</option>";
        /* Option values are added by looping through the array */
        }
        echo "</select>";// Closing of list box 

我遇到的主要问题是将每个下拉列表的结果传递给 MySQL 查询。例如,如果用户从类(class)下拉菜单中选择“打字”和“营销”——我需要 MySQL 查询:

SELECT * FROM acme WHERE course = 'Typing' OR course = 'Marketing'

此外,我还需要将第二个下拉列表添加到等式中,因此假设用户选择了“打字”和“营销”,然后他们从日期下拉列表中选择 21-06-2010,因此那么查询需要是:

SELECT * FROM acme WHERE course = 'Typing' OR course = 'Marketing' AND date = '21-06-2010' OR date = '18-05-2010'

显然,如果他们从下拉列表中选择了多个日期,我也需要构建。

我希望我已经足够清楚地解释了我想要实现的目标......非常感谢收到的所有帮助。真的很难理解这个问题。

提前致谢

荷马。

最佳答案

使用 WHERE value IN ('a', 'b'):

SELECT * FROM acme WHERE course IN ('Typing','Marketing') AND date IN ('21-06-2010', '17-09-2010');

在 HTML(或输出 HTML 的 PHP)中,将 [] 添加到字段名中:

<select name='course[]' value='' multiple='multiple'>

在 PHP 中:

$courses=$_POST['course'];
$courses=array_map('mysql_real_escape_string', $courses);


$dates=$_POST['date'];
$dates=array_map('mysql_real_escape_string', $dates);

$query = 'SELECT * FROM `acme` WHERE ';
$query.='`course` IN(\''. join("', '", $courses). '\')';
$query.='AND `date` IN(\''. join("', '", $dates). '\')';

关于PHP - 两个多选下拉菜单,将用户选择传递给 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3635370/

相关文章:

mysql - 子查询获取到期付款

javascript - 连接选择标签

php - 插入到数据库

php - php 中的注册页面数据库中的值未更新

php - Laravel 5.3 将数据传递到密码重置模板失败

jsf-2 - 使用 PrimeFaces 下拉列表中的复选框进行多项选择

javascript - CkEditor 工具栏组选项下拉

php - 基于 PHP 语言的 URL 别名

mysql - 如何更新MYSQL数据库所有表的公共(public)字段长度?

mysql - REGEX 查询在 MyISAM 表中是否比在 InnoDB 中运行得更快?