javascript - 我想通过使用 php 或其他语言选择多个文本框来进行过滤?
问题描述
我正在开发最终项目,它是我大学的一个网站,我正在使用 PHP 开发它。该项目有 6 个字段用于过滤。所以我想使用一个或多个字段来过滤数据。但是,如果我将一个或多个字段留空,则会出现显示错误。所以请帮帮我。我有 2 个不同的代码。如果我使用任何一个领域,一项工作。但另一个代码必须使用 6 个字段,否则会显示错误。
工作只使用任何一个领域。
if (isset($_POST['filter'])) {
if (!empty($_POST['thana'])) {
$fthana = $_POST['thana'];
$query = "SELECT * FROM postad WHERE status='1' AND thana = '$fthana' ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
}
if (!empty($_POST['area'])) {
$farea = $_POST['area'];
$query = "SELECT * FROM postad WHERE status='1' AND area = '$farea' ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
}
if (!empty($_POST['category'])) {
$fcategory = $_POST['category'];
$query = "SELECT * FROM postad WHERE status='1' AND category = '$fcategory' ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
}
if (!empty($_POST['whom'])) {
$fwhom = $_POST['whom'];
$query = "SELECT * FROM postad WHERE status='1' AND whom = '$fwhom' ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
}
if (!empty($_POST['available'])) {
$favailable = $_POST['available'];
$query = "SELECT * FROM postad WHERE status='1' AND available = '$favailable' ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
}
if (!empty($_POST['rent'])) {
$frent = $_POST['rent'];
$query = "SELECT * FROM postad WHERE status='1' AND rent <= '$frent' ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
}
如果我使用 6 个字段,则为第二个工作。但是如果我将任何一个或多个字段留空,则会显示错误。
if ($fthana!="" && $farea!="" && $fcategory!="" && $fwhom!="" && $favailable!="" & $frent!="") {
$query = "SELECT * FROM postad WHERE status='1' AND thana = '$fthana' AND area = '$farea' AND category = '$fcategory' AND whom = '$fwhom' AND available = '$favailable' AND rent = '$frent' ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
}
解决方案
Simplified version (without taking security issues into consideration) of your code can be someting like:
$where = [];
if ($fthana!="") {
$where[] = "thana = '$fthana'";
}
if ($farea!="") {
$where[] = "area = '$farea'"
}
if ($fcategory!="") {
$where[] = "category = '$fcategory'";
}
// more conditions here
$query = "SELECT * FROM postad WHERE status='1' AND " . implode(' AND ', $where) . " ORDER BY createdate DESC LIMIT $start, $limit";
$data = mysqli_query($conn, $query);
推荐阅读
- javascript - CSS 过渡:平滑动画视频宽度失败
- jenkins - 网络挂钩| GitLab | jenkins 管道 |声明式语法
- c# - 处理 context.saveChanges() 中每个实体的异常
- python - Flask with Jinja 在第一页后出现分页问题
- java - ConversionService bean 与转换对象的常规转换器 bean
- javascript - 使用 React Router 解决问题
- ios - 迦太基更新未发生
- python - Python setuptools 的“setup.py install”不会自动调用 build?
- reactjs - ReactNative Jest 快照测试失败
- ios - Swift 注释自定义图像