当我点击“华硕”复选框时,结果是所有型号的“华硕”,所有“尺寸”都很好。但是当我点击“Asus”和“15”'复选框时,结果是所有这种尺寸的模型,包括“Acer”等等。它必须如何工作(至少在我的想象中:)) - 点击“华硕”和“15”,并获得仅与点击(选中)复选框相关的数据。
谢谢。
复选框:
<input type="checkbox" name="Acer"> Acer
<input type="checkbox" name="Asus"> Asus
...
<input type="checkbox" name="15.6"> 15''
<input type="checkbox" name="17"> 17''
的JQuery / AJAX:
$("input[type=checkbox]").click(function() {
var ids = [];
$("input[type=checkbox]:checked").each(function() {
ids.push($(this).attr("name"));
});
ids = ids.join(",");
$.get("mysql.php", {q: ids},
function(result) {
$("div#output").html(result);
});
});
MySQL查询:
$g = $_GET['q'];
if(isset($g)) {
$param = "" . str_replace(",", "','", $_GET['q']) . "";
$sql = "SELECT * FROM `notebook` WHERE `trademark` IN ('$param') OR `size` IN ('$param') ORDER BY `trademark`";
$query = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($query)) {
echo '<p>'.$row['trademark'].' = '.$row['size'].'</p>';
}
}
答案 0 :(得分:0)
难道你不想只使用AND代替OR吗?
如果您获得所有匹配商标和所有匹配尺寸的结果,则应使用AND,它仅在与商标和尺寸匹配时返回结果。
答案 1 :(得分:0)
你有2个参数来过滤结果,你必须单独使用它们。
我的建议:
复选框:
<input type="checkbox" name="trademark" value="Acer"> Acer
<input type="checkbox" name="trademark" value="Asus"> Asus
....
<input type="checkbox" name="size" value="15.6"> 15''
<input type="checkbox" name="size" value="17"> 17''
jquery的:
$("input[type=checkbox]").click(function() {
var trade = [];
var sizes= [];
$("input[type=checkbox]:checked").each(function() {
if($(this).attr("name")=="trademark"){
trade.push($(this).val());
}
else{
sizes.push($(this).val());
}
});
trade = trade.join(",");
sizes= sizes.join(",");
$.get("mysql.php", {q: trade,p: sizes},
function(result) {
$("div#output").html(result);
});
});
mysql:
$g = $_GET['q'];
$h = $_GET['p'];
$wheresql="";
$where=0;
if(isset($g)) {
$where=1;
$param = "" . str_replace(",", "','", $_GET['q']) . "";
$wheresql.="`trademark` IN ('$param')";
}
if(isset($h)) {
if($where==1){$wheresql.=" AND ";}
$where=1;
$param = "" . str_replace(",", "','", $_GET['p']) . "";
$wheresql.="`size` IN ('$param')";
}
if($where==1){
$sql = "SELECT * FROM `notebook` WHERE ".$wheresql." ORDER BY `trademark`";
$query = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($query)) {
echo '<p>'.$row['trademark'].' = '.$row['size'].'</p>';
}
}
小解释:你有两组由其名称区分的复选框,并在jquery代码中单独使用它们,使得可以将它们发送到2个变量的mysql搜索,然后在mysql搜索脚本中,为每个变量做在{where}进行搜索时,$where
变量有两个目的:如果有任何商标和尺寸选中,首先将" AND "
添加到sql,第二:检查是否有任何搜索条件(如果没有参数调用,它就不会进行搜索)。
我没有测试过代码:P
抱歉我的英文