PHP MYSQL复选框搜索

时间:2017-01-01 05:01:14

标签: php jquery mysql checkbox

我正在进行复选框搜索。我是PHP的新手。如果有人能帮助我,我将不胜感激。基本上,用户检查所需的选项,点击提交,并显示与复选框选项匹配的结果。复选框的值为M表示男性,F表示女性,其值与MYSQL表中的数据相匹配。

因此,如果用户选中复选框“男性”(请参阅​​下面的代码),则返回MYSQL表中值为“M”的所有“男性”数据。任何未选中的复选框都应该被忽略,因为用户只对“男性”选项“M”(真实)感兴趣。

总结一下,我只需要搜索以考虑已经检查过的复选框,并通过PHP回显已选择的用户(更像是过滤)。任何帮助表示赞赏。感谢

表格如下:

id      name     address    gender    race
-------------------------------------------

1. 1    Lee      NY          M        French
2. 2    James    LA          M        Colombian
3. 3    Kashi    JAPAN       F        Japanese

我有一个带有这样的复选框的表单:

<form action="shortlist.php" method="post">
 <label for="sel1">Gender:</label>
 Male:<input name="keyword[]" type="checkbox" value="M"  />
 Female:<input name="keyword[]" type="checkbox" value="F" />
 <button name = "myBtn" type="submit" class="btn btn-  default">Search</button>
</form>

SQL:

$sql="SELECT name, address,gender,race FROM talent1 WHERE gender = $gender'";

我想回应这样的事情:

echo "<table width='100%'>\n";
//if (mysqli_num_rows($result) > 0){
//$row=mysqli_fetch_assoc($result);
//$muchneededid = $row["talent_id"];
     while ($row=mysqli_fetch_assoc($result))   
        echo'<tr>'."\n";
        echo '<tr>';
        echo '<th>Name</th>';
        echo '<th>Address</th>';
        echo '<th>Gender</th>';
        echo '</tr>';
        echo "<td>{$row["name"]}</td>\n" . "<td>{$row["address"]}</td>\n" . "<td>{$row["gender"]}</td>\n";  
        echo '</tr>'."\n";
        echo "</table>\n";
        }
        else
        {
       echo "0 results";
       }
       mysqli_close($conn);
       }

1 个答案:

答案 0 :(得分:2)

鉴于我们得到的信息,它将是这样的:

<?php
//$_POST['keyword'] = array("M", "F");
$sql_addon = ''; // EDIT: this was one line below first, which of course created an 'undefined' error.
if(isset($_POST['keyword'])) {

    foreach($_POST['keyword'] as $k => $val) {
         $sql_addon.= " OR gender='$val'";
    }
}
$sql="SELECT name, address,gender,race FROM talent1 WHERE 1=1 ";
if($sql_addon) {
    $sql .= " AND (1=2 ".$sql_addon.")";
}
echo $sql;
// SELECT name, address,gender,race FROM talent1 WHERE 1=1 AND (1=2 OR gender=M OR gender=F)
?>

那些1 = 1和1 = 2可能看起来很傻,但它(IMHO)是生成该sql的最简单方法。 1 = 2用于创建假值,因此如果没有单击任何选项,则不会显示任何记录。