我已经列出了公司名单,包括他们的领域和规模。我做了几个复选框以便过滤掉它们
<tr>
<td><input type="checkbox" name="field[]" value="Water">Water </td>
<td><input type="checkbox" name="size[]" value="Small">Small </td>
</tr>
<tr>
<td><input type="checkbox" name="field[]" value="Energy">Energy </td>
<td><input type="checkbox" name="size[]" value="Medium">Medium </td>
</tr>
<tr>
<td><input type="checkbox" name="field[]" value="Wind">Wind </td>
<td><input type="checkbox" name="size[]" value="Big">Big </td>
</tr>
<tr>
<td><input type="checkbox" name="field[]" value="Earth">Earth </td>
这是PHP复选框搜索:
if(isset($_REQUEST['submit']))
{
//if( count($_POST['field']) > 0)
if (isset($_POST['field']))
{
$field = implode(',',$_POST['field']);
$str = "AND company_field LIKE '$field'";
}
else
{
$str = "";
}
//if( count($_POST['size']) > 0 )
if (isset($_POST['size']))
{
$size = implode(',',$_POST['size']);
$str1 = "AND company_size LIKE '$size'";
}
else
{
$str1 = "";
}
$run = "SELECT * FROM company WHERE 1=1 ".$str.$str1;
$reslt = mysql_query($run);
如果我没有选择任何一个或选择每个列中的一个,则复选框可以正常工作。
但是当我在1列中选择2个或更多时,查询将如下所示:
SELECT * FROM company_info WHERE 1=1 AND company_size LIKE 'M, B'
我知道这个查询错了,应该是
WHERE 1=1 AND company_size LIKE 'M' OR company_size LIKE 'B'
。
所以我正在为此寻找解决方案或代码。
任何帮助表示赞赏。谢谢!
答案 0 :(得分:1)
你可以使用,
$ field = implode(',',$ _ POST ['field']);
$ str =“AND company_field
IN(”。$ field。“)”;
答案 1 :(得分:0)
只需尝试此
<?php
if(isset($_REQUEST['submit']))
{
$str = NULL;
//if( count($_POST['field']) > 0)
if (isset($_POST['field']))
{
$field = implode(',',$_POST['field']);
$str =" AND company_field IN ($field) ";
}
//if( count($_POST['size']) > 0 )
if (isset($_POST['size']))
{
$size = implode(',',$_POST['size']);
$str .= " AND company_size IN ($size) ";
}
$run = mysql_query("SELECT * FROM company WHERE ".$str);
?>