我正在进行复选框搜索。我是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);
}
答案 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用于创建假值,因此如果没有单击任何选项,则不会显示任何记录。