php – 使用一个或多个(多个)参数搜索表单
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 使用一个或多个(多个)参数搜索表单,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4299字,纯文字阅读大概需要7分钟。
内容图文
![php – 使用一个或多个(多个)参数搜索表单](/upload/InfoBanner/zyjiaocheng/717/ffde0b20f152486f87e1df5f5b7f28c4.jpg)
我已经掌握了基础知识,在那里我创建了两个文件,一个用户输入搜索参数的搜索表单,以及创建输入项目的结果文件.为简单起见,我们将搜索表单文件指定为search.php,将结果页面指定为results.php.
编辑:清理标签礼仪,使阅读更顺畅.
search.php中
<?php
if(!empty($_POST['id']) && isset($_POST['id'])) {
header("Location: ?m=search.results&id=".$_POST['id']."");
} elseif(!empty($_POST['major']) && isset($_POST['major'])) {
header("Location: ?m=search.results&major=".$_POST['major']."");
} elseif(!empty($_POST['college']) && isset($_POST['major'])) {
header("Location: ?m=search.results&college=".$_POST['college']."");
} elseif (!empty($_POST['name']) && isset($_POST['name'])) {
header("Location: ?m=search.results&name=".$_POST['name']."");
} elseif (!empty($_POST['id']) && !empty($_POST['college']) && !empty($_POST['major'])
&& isset($_POST['submit']) && !empty($_POST['name'])) {
echo "<div class='alert alert-danger'>No students found. Please try different parameters.</div>";
}
?>
<h4>Search</h4>
<form method="POST">
<table width="100%">
<tr><td>ID:</td><td> <input type="text" name="id" class="form-control"></textarea></td></tr>
<tr><td>Name:</td><td> <input type="text" name="name" class="form-control"></textarea></td></tr>
<tr><td>Major:</td><td><select name="major" class="form-control"><option></option><?php echo majorSelect(); ?></select></td></tr>
<tr><td>College:</td><td><select name="college" class="form-control"><option></option><?php echo collegeSelect(); ?></select></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="Search" class="btn btn-lrg btn-primary" style="margin-top:10px;"></td></tr>
</table>
</form>
results.php
<?php if(isset($_GET['id'])){
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND a.uid = '".$_GET['id']."'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} elseif(isset($_GET['major'])){
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND a.major = '".$_GET['major']."'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} elseif(isset($_GET['college'])){
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND a.college = '".$_GET['college']."'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} elseif(isset($_GET['name'])){
$name = $_GET['name'];
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND b.name LIKE '%". $name . "%'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} ?>
因此,基本上我想重写上述内容,而用户可以输入一个或多个参数,并返回所需的结果(例如,姓名和大学 – & name = x& college = y或者所有项目,如果需要).我想我需要重新思考这两个文件中的逻辑,但我愿意接受你,这个美妙的社区可能有的任何想法或建议!任何建议/指导将不胜感激.
解决方法:
动态构建WHERE子句.我推荐的方法是将每个条件推送到一个数组上,然后使用implode()连接所有条件,并根据您的喜好将它们与AND或OR连接起来.
$wheres = array();
$params = array();
if (!empty($_GET['id'])) {
$wheres[] = 'a.uid = :uid';
$params[':uid'] = $_GET['id'];
}
if (!empty($_GET['major'])) {
$wheres[] = 'a.major = :major';
$params[':major'] = $_GET['major'];
}
if (!empty($_GET['name'])) {
$wheres[] = 'b.name LIKE :name';
$params[':name'] = '%'.$_GET['name'].'%';
}
// And so on for all parameters
$sql = "SELECT *
FROM user_details AS a
JOIN user AS b ON a.uid = b.id";
if (!empty($wheres)) {
$sql .= " WHERE " . implode(' AND ', $wheres);
}
$stmt = $db->prepare($sql);
$stmt->execute($params);
然后在原始代码中显示结果.
while ($student = $stmt->fetch()) {
...
}
内容总结
以上是互联网集市为您收集整理的php – 使用一个或多个(多个)参数搜索表单全部内容,希望文章能够帮你解决php – 使用一个或多个(多个)参数搜索表单所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。