【发布时间】:2018-03-11 19:44:00
【问题描述】:
我是一名编程爱好者,正在从事我的一个小项目,但是当我想为我的 mysql 输出制作过滤器时遇到了困难。
当我填写所有搜索输入字段并提交时,一切正常,出现正确的过滤结果。但是当我离开一个字段时,没有任何显示(只有 else 命令)使用 AND 条件。如果我使用 OR 并将其留空,它会显示所有结果,而不关心必填字段中填写的内容。
即使其中一个字段为空,是否有任何方法可以显示结果?我尝试在stackoverflow中使用来自不同帖子的代码,但还没有运气,因为我没有太多经验,无法弄清楚如何在我的代码中使用它。
if(isset($_POST["profilename"]) && $_POST["profilename"] != "")
$sql .= " AND profilename = '". $_POST["profilename"] ."'";
以下是我的代码,如果您可以查看并建议我可以编辑的内容,以便过滤正常工作。
<select class="form-control" id="Select1" name="departure">
<select class="form-control" id="Select2" name="destination">
<select class="form-control" id="Select3" name="layover">
...
<?php
include_once("connect.php");
if (isset($_GET['submit'])) {
$departure = mysqli_real_escape_string($connection, $_GET['departure']);
$destination = mysqli_real_escape_string($connection, $_GET['destination']);
$layover = mysqli_real_escape_string($connection, $_GET['layover']);
$result = mysqli_query($connection, "SELECT * FROM crud
WHERE departure LIKE '$departure%'
AND kam LIKE '$kam'
AND layover LIKE '$layover'
ORDER BY id DESC");
if($make = mysqli_num_rows($result) > 0){
while($r = mysqli_fetch_assoc($result)){
echo '<div style="display:block;"'.$r['departure'].'</div>';
echo '<div style="display:block;"'.$r['kam'].'</div>';
echo '<div style="display:block;"'.$r['layover'].'</div>';
//following code..
}
}else{
echo'<h4>No match found!</h4>';
print ($make);
}
mysqli_free_result($result);
mysqli_close($connection);
}
?>
例如:使用Destination 过滤Departure 并将Layover 留空 -> 应返回所需的Departure and Destination 和任何Layover 的结果。
或第二个示例:用Layover 填充Destination,但将Departure 留空将导致使用任何Departure 搜索Destination and Layover。
请让我知道我的代码是否可行以及可能的方式。 非常感谢你们!!
【问题讨论】:
标签: php mysql search mysqli filter