Stack Overflow на русском Asked by ilyaaa521 on July 25, 2020
Делаю фильтр, вот форма:
<form id="filter__form">
<input type="text" name="cat_id" style="display: none;" value="{{category_id}}">
<div class="filter__new-item">
<div class="filter__new-item-name">Вес</div>
<div class="filter__new-item-result-block">
<div class="filter__new-item-result">
<input type="checkbox" name="f__ves" value="{{ filter_item_ves }}">
<span>{{ filter_item_ves }}</span>
</div>
</div>
</div>
</form>
Вытягиваю все выбранные checkbox:
<script type="text/javascript">
let ves = $("input[name~='f__ves']");
let arr_ves = [];
for (let i = 0; ves.length > i; i++) {
ves[i].onclick = function() {
this.classList.toggle("check_true");
let elemId = $(this).val();
if (this.classList.contains("check_true") === true) {
if (arr_ves.indexOf(elemId) === -1) {
arr_ves.push(elemId);
}
} else {
let index = arr_ves.indexOf(elemId);
if (index >= 0) {
arr_ves.splice(index, 1);
}
}
// console.log(arr_ves);
}
}
Передаю через ajax в обработчик:
$("#result__btn").click(function(){
let ves_data = {
ves: arr_ves,
};
let material_data = {
material: arr_material,
};
let cat_id = $("input[name~='cat_id']").val();
console.log(ves_data);
console.log(material_data);
$.ajax({
url: '/filter.php',
method: 'post',
dataType: 'html',
data: {'ves[]':ves_data, 'material[]':material_data, 'cat_id':cat_id},
success: function(response){
// result = $.parseJSON(response);
alert(response);
},
error: function(response) { // Данные не отправлены
alert('Ошибка. Данные не отправлены.');
}
});
});
Сам обработчик:
// Получаем данные формы
$cat_id = $_POST['cat_id'];
// Получаем id товаров текущей категории
$sql = "SELECT * FROM `oc_product_to_category` WHERE category_id = '" . $cat_id . "' ";
$query = mysqli_query($dbh, $sql);
$product_id_arr = array();
while ($row = $query->fetch_assoc()) {
$product_id_arr[] = $row['product_id'];
}
if (isset($_POST['ves']) and !isset($_POST['material'])) {
echo "не существует пост материал но есть вес";
$get_ves = $_POST['ves']; // Вес
if ($product_id_arr) {
foreach ($get_ves as $get_ves_item) {
foreach ($product_id_arr as $prod_id) {
$prod_get_attr = "SELECT * FROM `oc_product_attribute` WHERE product_id = '" . $prod_id . "' AND attribute_id = '" . 28 . "' AND text = '" . $get_ves_item . "'"; // получаем id товаров, выбранных атрибутов Вес
$query_prod_get_attr = mysqli_query($dbh, $prod_get_attr);
foreach ($query_prod_get_attr as $product_id) {
$product_val[] = $product_id['product_id'];
}
}
}
var_dump($product_val);
}
}
Почему то получаю NULL, делал без ajax, все было ок, получал массив нужных product_id. Подскажите, пожалуйста, где ошибка?
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP