编辑:
下拉菜单中列出了以下内容:
打字类(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/