Я создал страницу фильтрации продуктов, используя ajax и php для моего сайта по недвижимости.Сейчас я пытаюсь добавить опцию, чтобы упорядочить результаты по цене, но я не могу добавить эту последнюю часть кода SQL к запросу.Я знаю, что я должен также добавить значения как переменные, но все способы, которые я пробовал, либо откладывать другие фильтры, либо часть «ORDER BY» вообще не включены в запрос.Я бы даже был открыт, чтобы создать кнопку «Отправить» только для этой функции, но мне нужно, чтобы она как можно лучше взаимодействовала с остальной частью фильтрации.Я бы хотел немного помочь
<?php
//fetch_data.php
include('database_connection.php');
if(isset($_POST["action"]))
$query = "SELECT * FROM Property Where PropertyID != 0 ";
if(isset($_POST["minimum_price"], $_POST["maximum_price"]) && !empty($_POST["minimum_price"]) && !empty($_POST["maximum_price"]))
{
$query .= "AND Price BETWEEN '".$_POST["minimum_price"]."' AND '".$_POST["maximum_price"]."'";
}
if(isset($_POST["city"]))
{
$city_filter = implode("','", $_POST["city"]);
$query .= "AND City IN('".$city_filter."')";
}
if(isset($_POST["sort"]))
{
$query .= 'AND ORDER BY '.$_REQUEST['sort'];
}
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$total_row = $statement->rowCount();
$output = '';
if($total_row > 0)
{
foreach($result as $row)
{
$output .= '
<div class="col-sm-4 col-lg-3 col-md-3">
<div style="border:1px solid #ccc; border-radius:5px; padding:16px; margin-bottom:16px; height:450px;">
<img src="image/'. $row['Image'] .'" alt="" class="img-responsive" >
<p align="center"><strong><a href="#">'. $row['Name'] .'</a></strong></p>
<h4 style="text-align:center;" class="text-danger" >'. $row['Price'] .'</h4>
<p>Property Type : '. $row['Property_Type'].' <br />
<p>For : '. $row['Listing_Type'].' <br />
<p>Living Area : '. $row['Living_area'].' <br />
<p>City : '. $row['City'].' <br />
</div>
</div>
';
}
}
else
{
$output = '<h3>No Data Found</h3>';
}
echo $output;
?>
<?php
//index.php
include('database_connection.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Product filter in php</title>
<script src="js/jquery-1.10.2.min.js"></script>
<script src="js/jquery-ui.js"></script>
<script src="js/bootstrap.min.js"></script>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link href = "css/jquery-ui.css" rel = "stylesheet">
<!-- Custom CSS -->
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<!-- Page Content -->
<div class="container">
<div class="row">
<br />
<h2 align="center">Product Filters in PHP</h2>
<br />
<div class="col-md-3">
<select name='sort'>
<option id="ASC" value='ASC'> Price Low to High </option>
<option id="DESC" value='DESC'> Price High to Low </option>
</select>
<div class="list-group">
<h3>Price</h3>
<input type="hidden" id="hidden_minimum_price" value="0" />
<input type="hidden" id="hidden_maximum_price" value="3000000" />
<p id="price_show">1000 - 3000000</p>
<div id="price_range"></div>
</div>
<div class="list-group">
<h3>City</h3>
<?php
$query = "
SELECT DISTINCT(City) FROM Property WHERE Price !=1
";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{
?>
<div class="list-group-item checkbox">
<label><input type="checkbox" class="common_selector city" value="<?php echo $row['City']; ?>" > <?php echo $row['City']; ?> </label>
</div>
<?php
}
?>
</div>
</div>
<div class="col-md-9">
<br />
<div class="row filter_data">
</div>
</div>
</div>
</div>
<style>
#loading
{
text-align:center;
background: url('loader.gif') no-repeat center;
height: 150px;
}
</style>
<script>
$(document).ready(function(){
filter_data();
function filter_data()
{
$('.filter_data').html('<div id="loading" style="" ></div>');
var action = 'fetch_data';
var minimum_price = $('#hidden_minimum_price').val();
var maximum_price = $('#hidden_maximum_price').val();
var city = get_filter('city');
$.ajax({
url:"fetch_data.php",
method:"POST",
data:{action:action, minimum_price:minimum_price, maximum_price:maximum_price, city:city},
success:function(data){
$('.filter_data').html(data);
}
});
}
function get_filter(class_name)
{
var filter = [];
$('.'+class_name+':checked').each(function(){
filter.push($(this).val());
});
return filter;
}
$('.common_selector').click(function(){
filter_data();
});
$('#price_range').slider({
range:true,
min:1000,
max:3000000,
values:[1000, 3000000],
step:500,
stop:function(event, ui)
{
$('#price_show').html(ui.values[0] + ' - ' + ui.values[1]);
$('#hidden_minimum_price').val(ui.values[0]);
$('#hidden_maximum_price').val(ui.values[1]);
filter_data();
}
});
});
</script>
</body>
</html>