【问题标题】:Checkbox search php复选框搜索php
【发布时间】:2014-07-07 01:27:55
【问题描述】:

我制作了一份公司清单,包括他们的领域和规模。我做了几个复选框以过滤掉它们

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

【问题讨论】:

    标签: php mysql search checkbox


    【解决方案1】:

    你可以使用,

    $field = implode(',',$_POST['field']); $str = "AND company_field IN (".$field." )";

    【讨论】:

    • 我已经尝试过了,但是查询是这样的:“SELECT * FROM company_info WHERE 1=1 AND company_size LIKE ('M, B')”并且它不起作用,因为它应该像这样“SELECT * FROM company_info WHERE 1=1 AND company_size LIKE ('M', 'B')”,每个元素都包含在引号中
    • 去吧,$field = "'".implode("','", $_POST['field'])."'" $str = "AND company_field IN (".$字段。")";
    【解决方案2】:

    试试这个

    <?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);
    
    
    
    ?>
    

    【讨论】:

    • 谢谢,但是当我尝试时,它发生了与上面最后一个答案的评论相同的问题。
    • 删除 1=1 并立即尝试
    • 感谢您的帮助,我通过上述解决了。我很感激。
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多