我正在开发最终项目,这是我大学的一个网站,我正在使用 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/