在我的数据库中有以下字段,它们使用0或1表示true或false来说明该功能是否可用:
feature1
feature2
feature3
feature4
所有这些都对应于我的PHP页面中的可用复选框,允许选择一个功能。
每个元素都是这样的:
<input type="checkbox" name="feature1" value="1">
然后我将其设置为变量,如果没有勾选复选框,则将变量设置为0:
$feature1 = $_POST['feature1'];
if ($feature1 != '1'){$feature1 = 0;}
除了功能(例如玩家数量,日期等)之外,还有更多选择,因为它适用于预订系统。如果未选择某个功能,则应显示与其他条件匹配的所有字段,以及具有该功能且不可用的所有内容。所以在某种程度上,类似于:
if ($feature1 = 1){
[SHOW ONLY SPORTS WHERE FEATURE1 IS TRUE AND OTHER CRITERIA IS TRUE]
}
else {
[SHOW ALL SPORTS WHERE OTHER CRITERIA IS TRUE, FEATURE1 BEING TRUE OR FALSE DOES NOT MATTER]
}
这是我对数据库的查询(忽略mysql_ * - 我理解风险,但在这种情况下不相关,请不要抨击)。
$test = mysql_query("SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type' AND feature1='$feature1'");
当用户想要feature1时,这很好,但是如果他们不介意feature1是true还是false(因为它是一个附加选项),它只会显示feature1为false的位置。它应该显示feature1为true或false的所有内容。
显然我可以这样做:
if ($feature1 == 1){
$test = mysql_query("SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type' AND feature1='$feature1'");}
else {
$test = mysql_query("SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type'");}
但是,有了多个单独的功能,它需要大量的if语句,并且有很多可能的mysql查询。
我有什么方法可以解决这个问题吗?例如,用户选择了他们想要的功能2和功能4,它应该显示功能2和4为TRUE的所有结果,功能1和3为TRUE或FALSE。
希望这是有道理的。任何可以提供帮助的技术指南都会非常感激。
答案 0 :(得分:0)
尝试这样的事情吗?
$sql = "SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type'";
if ($feature1 == 1){
$sql = $sql . " AND feature1='$feature1'";
}
if ($feature2 == 1){
$sql = $sql . " AND feature2='$feature2'";
{
if ($feature3 == 1){
$sql = $sql . " AND feature3='$feature3'";
{
if ($feature4 == 1){
$sql = $sql . " AND feature4='$feature4'";
{
$test = mysql_query($sql);
或者你可以试试
$sql = "SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type'
AND (feature1='$feature1' OR '$feature1' != '1')
AND (feature2='$feature2' OR '$feature2' != '1')
AND (feature3='$feature3' OR '$feature3' != '1')
AND (feature4='$feature4' OR '$feature4' != '1')";
$test = mysql_query($sql);