我想问一下,如何处理AJAX发送到PHP文件的多维数组,然后将它们与数据库进行比较。 我搜索了很多,但我找不到一个很好的解决方案。 问题是数组包含10个问题ID和问题的选定答案。 如果它有帮助,下面是代码。提前谢谢。
$("#next_step").click(function() {
var object = {};
$("ul.question").each(function() {
var prasanje = $(this).attr("questionid");
var odgovor = $("ul#prasanje_" +prasanje+ " > label.answer > li.answer > input.answer:checked").val();
object[prasanje] = odgovor;
});
console.log(object);
$.ajax ({
method: "POST",
url: "procesi.php",
data: {proces: "proverka_odgovor", data: object},
success: function(data) {
console.log(data);
if(data < 8) {
var rezultat = 10 - data;
$("#error_box").show();
$(".info_text").html("Имате [" +rezultat+"] грешни прашања. Потребно е да имате миниум 8 точни прашања за да продолжите на втор степен на регистрацијата!");
} else {
$("#first_step_box").hide();
$("#second_step_box").show();
}
}
});
});
if($_POST["proces"] == "proverka_odgovor") {
$rezultat = 0;
$niza_glavna = json_encode($_POST["data"]);
$data = json_decode($niza_glavna, TRUE);
foreach ($data as $kviz) {
$prasanje = $kviz[0];
$odgovor = $kviz[1];
$proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id = '$prasanje' AND tocenodgovor = '$odgovor'");
if(mysqli_num_rows($proverka) > 0) {
$rezultat++;
}
}
echo $rezultat;
}
这是ajax发送的内容。我该如何处理这个数组
{3: "1", 4: "1", 8: "1", 9: "1", 10: "1", 13: "1", 15: "1", 16: "1", 23: "1", 26: "1"}
答案 0 :(得分:1)
您正在处理一个简单的数组,以JSON格式发送。你想解码它并从那里开始。
$data = json_decode($niza_glavna, TRUE);
$ids = array_keys($data);
$vals = array_values($data);
上面提取了单独数组中的键和值,您只需在查询中运行:
$proverka = mysqli_query($kon, "SELECT * FROM prasanja WHERE id IN (" . implode(',', $ids) . ") AND tocenodgovor IN (" . implode(',', $vals) . ")");
这消除了对任何循环和多个查询的需要。