在PHP中使用复选框过滤内容的最佳方法是什么?

在PHP中使用复选框过滤内容的最佳方法是什么?,php,checkbox,Php,Checkbox,我有以下复选框: 例如,当用户检查[x]件夹克衫和[x]件T恤衫并单击[submit(提交)按钮]时,表单将向自身发送post请求。然后,根据选中的复选框生成一个动态查询,然后只查询选定的类别。然后显示在页面上 我遇到的问题是尝试在post请求之后动态创建查询。使用“HTML数组” 选中此选项://选项 $options=array( “夹克”=>“夹克”, “牛仔裤”=>“牛仔裤”, “T恤”=>“T恤”, “鞋”=>“鞋” ); //在何处创建sql $sql_其中=数组('1'); for

我有以下复选框:

例如,当用户检查[x]件夹克衫和[x]件T恤衫并单击[submit(提交)按钮]时,表单将向自身发送post请求。然后,根据选中的复选框生成一个动态查询,然后只查询选定的类别。然后显示在页面上

我遇到的问题是尝试在post请求之后动态创建查询。

使用“HTML数组”

选中此选项:

//选项
$options=array(
“夹克”=>“夹克”,
“牛仔裤”=>“牛仔裤”,
“T恤”=>“T恤”,
“鞋”=>“鞋”
);
//在何处创建sql
$sql_其中=数组('1');
foreach($options作为$option)
{
if(isset($\u POST[$option]))$sql\u其中[]=“field='$option'”;
}
//查询数据
mysql_query(“SELECT*fromtablewhere.”内爆('AND',$sql_-WHERE));
//创建html
$sql_其中=数组('1');
foreach($name=>$option形式的选项)
{
?>

一种不确定是否最好的方法是逐部分创建查询

假设您要选择(使用SQL)表的所有成员:

$sql = "SELECT * FROM `clothes`"
然后添加您的请求限制:

$options = array(
    'jackets', 
    'jeans', 
    't_shirts', 
    'shoes'
);

$firstClause = true;
foreach ($options as $option)
{
    if (isset($_POST[$option])) 
    {
        if ($firstClause)
        {
            $sql .= " WHERE ";
            $firstClause = false;
        }
        else
        {
            $sql .= " OR ";
        }
        $sql .= "field = '$option'";
    }
}

下面呢

进一步阐述格拉法所说的:

$checked = $_POST['item'];
$query_where = "";
$N = count($checked);
for($i=0; $i < $N; $i++)
{
  if($i=0)
    $query_where = $query_where . "WHERE field = '". $checked[$i] . "'";
  else
    $query_where = $query_where . "AND field = '". $checked[$i] . "'";
}
$checked=$\u POST['item'];
$query_where=“”;
$N=计数($checked);
对于($i=0;$i<$N;$i++)
{
如果($i=0)
$query\u where=$query\u where.“where字段=”。$checked[$i]。“”;
其他的
$query_where=$query_where.”和字段='”。$checked[$i]。“'”;
}

然后将其添加到select查询的其余部分,记住检查是否设置了值等。

我认为您要做的是使用大量ajax。没有办法只使用POST创建它。然后以这种方式提取信息吗?我的意思是,您可以使用POST,但为什么要使用POST?如果有人想为该查询添加书签,该怎么办佩奇?谢谢,你一定会查到的。哇,这可能是我需要的!谢谢!你也可以从数组中生成输入。(更新)
// options
$options = array(
    'Jackets' => 'jackets', 
    'Jeans' => 'jeans', 
    'T-Shirts' => 't_shirts', 
    'Shoes' => 'shoes'
);

// create sql where
$sql_where = array('1');
foreach ($options as $option)
{
    if (isset($_POST[$option])) $sql_where[] = "field = '$option'";
}

// query data
mysql_query("SELECT * FROM table WHERE " . implode(' AND ', $sql_where));

// create html
$sql_where = array('1');
foreach ($options as $name => $option)
{
    ?>
        <input type="checkbox" name="<?= $option?>" id="<?= $option?>" value="1" />
        <label for="<?= $option?>"><?= $name?></label>
    <?
}
$sql = "SELECT * FROM `clothes`"
$options = array(
    'jackets', 
    'jeans', 
    't_shirts', 
    'shoes'
);

$firstClause = true;
foreach ($options as $option)
{
    if (isset($_POST[$option])) 
    {
        if ($firstClause)
        {
            $sql .= " WHERE ";
            $firstClause = false;
        }
        else
        {
            $sql .= " OR ";
        }
        $sql .= "field = '$option'";
    }
}
$checked = $_POST['item'];
$query_where = "";
$N = count($checked);
for($i=0; $i < $N; $i++)
{
  if($i=0)
    $query_where = $query_where . "WHERE field = '". $checked[$i] . "'";
  else
    $query_where = $query_where . "AND field = '". $checked[$i] . "'";
}