我想根据多选框中的值筛选一个mysql表,以便返回所有已选择值的结果。举例来说,这是我的多选框:基于多选框筛选mysql结果
<select name="gift[]" id="gift" multiple="multiple" onchange="change()">
<option value="him">Him</option>
<option value="her">Her</option>
<option value="kids">Kids</option>
<option value="teens">Teens</option>
<option value="mothersday">Mothers Day</option>
<option value="fathersday">Fathers Day</option>
<option value="valentines">Valentines Day</option>
<option value="gadgets">Gadgets</option>
<option value="secretsanta">Secret Santa</option>
</select>
如果用户选择“他”和“小工具”,它应该从MySQL表或者用“他”或者它的“小玩意”返回所有结果。
mysql表中的每个产品的数据都以字符串的形式存储在单个列中(例如,根据'gift'列可能会说他,她,孩子,小工具或其他行可能是她的小工具。上面的例子我希望它返回两行)。
结果由AJAX返回,我曾尝试使用WHERE IN子句,但无法得到它working.Here是我的代码(HTML选择框上面已经):
AJAX 注:不是完整的代码为简单起见
function change(){
var giftarray = new Array();
$.each($("#gift option:selected"), function(){
giftarray.push($(this).val());
});
var gift = "'" + giftarray.join("','") + "'";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("product").innerHTML=xmlhttp.responseText;
}
}
var url="results.php"
url=url+"&gift="+gift;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
Results.PHP 注:为简单起见,
$gift=$_GET['gift'];
$gift=str_replace("\\","",$gift);
$sql= "SELECT * FROM $productstable WHERE gift IN ($gift)";
$result = mysql_query($sql) or die ('Unable to run query:'.mysql_error());
while($item = mysql_fetch_array($result))
{
code to view products here
}
<? } mysql_close() ?>
不完整的代码
MySQL表和数据注:我只显示了两行的礼品列,ID和数据(希望这是确定)
CREATE TABLE `products` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`gift` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `products` VALUES(1,'him,her');
INSERT INTO `products` VALUES(2,'him,her,teens,gadgets');
这似乎是产品是否具有分配的只有一个值工作它在MySQL表中,但不是当它有多个。从我读过的内容来看,我想我可能会在单个列中存储多个条件时出错,但不知道如何解决该问题。非常感谢。
你可以编辑你的问题,包括你正在使用的数据库表中的一些示例吗? – ydaetskcoR 2015-04-01 10:43:16
仍然使用原生javascript for AJAX?考虑使用jQuery!另外,停止使用不推荐使用的'mysql_ *'函数;使用MySQLi或PDO。 – Raptor 2015-04-01 10:52:12
数据库脚本添加,也感谢猛禽,生病了它改变了。任何想法,为什么它不工作? – Josh 2015-04-01 11:38:41