Есть множество вопросов по этому поводу, но ни один из них не имеет отношения к опциям выбора.
Мой вопрос: у меня есть 4 варианта выбора с несколькими значениями, извлеченными из базы данных. Я хочу, чтобы информация базы данных отображалась, и когда пользователь выбирает каждый элемент, он показывает только то, что выбрал пользователь.
Например: Блок 1 - A (Показать все A) Блок 2 - год (Показать все A с указанием года, если его нет, отобразите поле «Ничего не соответствует вашему поиску» в поле 3 и т. д. *
Мой код:
if(isset($_POST["action"]))
{
$query = "
SELECT * FROM DB";
if(isset($_POST["producer"]))
{
$producer_filter = implode("','", $_POST["producer"]);
$query .= "
WHERE producer=('".$producer_filter."')
";
}
if(isset($_POST["size"]))
{
$size_filter = implode("','", $_POST["size"]);
$query .= " OR size=('".$size_filter."')
";
}
if(isset($_POST["model"]))
{
$model_filter = implode("','", $_POST["model"]);
$query .= "OR model=('".$model_filter."')";
}
if(isset($_POST["year"]))
{
$year_filter = implode("','", $_POST["year"]);
$query .= "OR year=('".$year_filter."')";
}
$statement = $conn->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$total_row = $statement->rowCount();
$output = '';
if($total_row > 0)
{
foreach($result as $row)
{
$output .= '
<tr><td>'.$row['producer'].'</td>
<td>'.$row['size'].'</td>
<td>'.$row['model'].'</td>
<td>'.$row['year'].'</td>
<td>'.$row['salesman'].'</td>
<td>'.$row['country'].'</td></tr>
';
}
}
else
{
$output = 'Please User Filters to Search for Parts';
}
echo $output;
}
А затем мой Jquery:
$(document).ready(function() {
filter_data();
function filter_data() {
const action = 'fetch_data';
let producer = get_filter('producer');
let size = get_filter('size')
let model = get_filter('model')
let year = get_filter('year')
$.ajax({
url: "search.php",
method: "POST",
data: {
action: action,
producer: producer,
size: size,
model: model,
year: year
},
success: function(data) {
$('.prod').html(data);
},
});
}
function get_filter(class_name) {
var filter = [];
$('.' + class_name).each(function() {
filterData = $(this).val();
filter.push(filterData)
});
console.log(filter)
return filter;
}
$('.form-control').change(function() {
filter_data();
});
});
Это работает, однако, он отображает все, независимо от того, соответствует ли он моим фильтрам или нет. Есть ли что-то, что я могу добавить в Jquery?
Я ценю всю помощь.