使用复选框搜索数据库

时间:2016-03-15 14:59:46

标签: php mysql checkbox mysqli

大家好,所以我试图了解使用复选框搜索数据库的最佳方法是什么。我是新手,正在寻找教程等但似乎无法找到任何有用的东西。我可以创建一个搜索引擎,搜索我的数据库并返回我需要的但我不知道如何使用复选框。例如:

我的数据库包含:

<html> </html>

就像我上面所说的那样,我得到了一个搜索框,用户可以编写一个简单的阶段,比如动作,它会调出一些动作在他们的流派中,但我不知道怎么做带复选框。

HTML:

    MovieName: ...
    Gen1: ... 
    Gen2:... 
    Gen3:... 
    Gen4:... 
etc

我的数据库名称TestHere和表名为test。任何有关完成此事或任何建议的帮助都会很棒,如果你想看我的搜索功能我可以发布但我不认为它会对复选框的搜索功能有所帮助

1 个答案:

答案 0 :(得分:2)

如@apokryfos所述,您需要执行以下操作:

<input type="checkbox" name="genres[]" value="genre1" />
<input type="checkbox" name="genres[]" value="genre2" />
<input type="checkbox" name="genres[]" value="genre3" />

Then in your PHP

<?php
$str = array();
$fields = array('gen1','gen2','gen3');
foreach ($_POST['genres'] as $genre){
    foreach ($fields as $gen){
        $str[] = "$gen LIKE '%".mysql_real_escape_string($genre).'%"';
    }
}
$str = implode(' OR ',$str);

$query = mysql_query("SELECT * FROM test WHERE movieName LIKE '%$searchq%' $str") or die("Could not search.");
?>

值得一提的是,虽然这应该有效,但LIKE不是最好的搜索,因为它必须查看每个字符串。实际上,如果整个字符串是提供的类型,你应该使用='',这也允许更好的索引。