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

Javascript 我想使用php或其他语言通过选择多个文本框进行过滤?,javascript,php,jquery,ajax,filtering,Javascript,Php,Jquery,Ajax,Filtering,我正在开发最后一个项目,这是我学院的一个网站,我正在使用PHP开发它。该项目有6个用于筛选的字段。所以我想使用一个或多个字段来过滤数据。但如果我将一个或多个字段保留为空,则会显示错误。所以请帮帮我。我有两种不同的密码。一个工作,如果我使用任何一个领域。但另一个代码必须使用6个字段,否则将显示错误 工作只使用任何一个字段 if (isset($_POST['filter'])) { if (!empty($_POST['thana'])) {

我正在开发最后一个项目,这是我学院的一个网站,我正在使用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);
            }
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);

我们应该猜测错误文本?为了对@u_mulder公平起见,这里应该指出,上面的代码可能容易受到sql注入的攻击,应该找到一种更好的方法,同时要更加精细,它不能解决潜在的sql注入问题,一切都可以,但是如果我使用第一个字段,那么其他字段就会得到一个错误错误:通知:未定义的索引:通知中的区域:未定义的索引:通知中的类别:未定义的索引:通知中的人:未定义的索引:通知中可用:未定义的索引:请思考如何删除这些邮件。所以已经有了解决这类问题的答案