javascript - 我想通过使用 php 或其他语言选择多个文本框来进行过滤?

标签 javascript php jquery ajax filtering

我正在开发最终项目,这是我大学的一个网站,我正在使用 PHP 开发它。该项目有 6 个用于过滤的字段。所以我想使用一个或多个字段来过滤数据。但如果我将一个或多个字段保留为空白,则会出现显示错误。所以请帮帮我。我有两个不同的代码。如果我使用任何一个字段,就可以完成一项工作。但另一个代码必须使用 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);
            }

最佳答案

代码的简化版本(不考虑安全问题)可能类似于:

$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 - 我想通过使用 php 或其他语言选择多个文本框来进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828511/

相关文章:

php - 单击超链接时提交表单

jquery - 如果 <ul> 元素没有 <li> 元素,如何删除它们

javascript - Ajax - 如何等待 php 完成?

javascript - 使用 php 后端和 redux 在 React js 中实现动态元标记

javascript - 如何检查加载的 Javascript 代码的完整性

javascript - ajax 与数据库查询和显示/隐藏表行

php如何找到用户来自的位置?

javascript - 如何让容器滚动到元素

javascript - 访问a about :blank iframe的内容

javascript - 如何比较 2 个数组,从数组的匹配中返回键以重写第一个数组中的键