我推翻了最近的帖子并删除了它。希望这个版本更清晰一点。
我有一个多选下拉列表,我希望能够使用。
过滤数据库表所以如果我有大约70个条目的下面的下拉列表:
<select multiple="multiple" id="filter" name="filter">
<optgroup label="category1"> <!--jquery ui plugin allows for grouping -->
<option value="sub1">Subcategory 1</option>
<option value="sub2">Subcategory 2</option>
<option value="sub3">Subcategory 3</option>
</optgroup>
<optgroup label="category2">
<option value="sub4">Subcategory 4</option>
<option value="sub5">Subcategory 5</option>
<option value="sub6">Subcategory 6</option>
...
我需要在我的sql语句中搜索6个类别,因此到目前为止我已经:
<?php
include ("connect.php");
$filter = $_POST["filter"];
$result = mysql_query("SELECT * FROM edt_images
WHERE category1= '$filter'
OR category2= '$filter'
OR category3 = '$filter'
OR category4 = '$filter'
OR category5 = '$filter'
OR category6 = '$filter'")
or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
echo "<img src='files/small/thumb0_".$row['item_name'].".".$row['file_extension']."' border='0'/>";
}
?>
现在它可以工作,如果我只从下拉列表中选择一个项目,因为它在六个列中搜索该条目。所以我的问题是如何在这六列中搜索多个条目?
提前致谢
答案 0 :(得分:2)
如果过滤器是所选类别的数组,则可以在查询中使用IN
:
$filterIn = implode("','",$filter);
SELECT * FROM edt_images
WHERE category1 IN ('$filterIn')
OR category2 IN ('$filterIn')
OR category3 IN ('$filterIn')
OR category4 IN ('$filterIn')
OR category5 IN ('$filterIn')
OR category6 IN ('$filterIn')
但请注意,您不应在SQL查询中使用未经过授权的用户输入。
答案 1 :(得分:0)
恕我直言,首先你需要允许从你的多选中返回多个值。为此,您需要在名称属性中添加括号,如下所示:
<select multiple="multiple" id="filter" name="filter[]">