复选框搜索php

时间:2014-07-06 16:46:53

标签: php mysql search checkbox

我已经列出了公司名单,包括他们的领域和规模。我做了几个复选框以便过滤掉它们

<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'。 所以我正在为此寻找解决方案或代码。 任何帮助表示赞赏。谢谢!

2 个答案:

答案 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);



?>