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