我正在进行复选框搜索。我是PHP的新手。如果有人可以帮助我,我会很感激。基本上,用户检查所需选项,命中提交和匹配复选框选项的结果。这些复选框的男性值为m,女性的F值与MySQL表中的数据匹配。
因此,如果用户检查复选框"男性"(请参见下面的代码),所有具有"男性"的数据,在MySQL表中具有" M"的值。并且任何未检查的复选框都应被简单地忽略,因为用户仅对选项"男性"为" m"(true)。
要概括我只需要搜索来考虑已检查的复选框,并回应了已通过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);
}
给定我们获得的信息将是这样的:
<?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看起来可能很愚蠢,但这是(恕我直言)生成该SQL的最简单方法。1 = 2可以创建一个虚假的值,因此,如果没有单击这些选项,则不会显示任何记录。