У меня есть форма с 10 флажками на основе идентификатора пользователя, но когда я устанавливаю флажок в своей базе данных, я вижу, что сохраняется только флажок идентификатора пользователя 1 ... пожалуйста, см. Мой код ниже, любая помощь приветствуется!
HTML:
<form method = "post" action = "" id = "prezente" uid = "<?php echo $row['id'];?>">
<input type = "checkbox" name = "day1" id = "day1" value = "1" class = "form-check-input">
<input type = "checkbox" name = "day2" id = "day2" value = "1" class = "form-check-input">
<input type = "checkbox" name = "day3" id = "day3" value = "1" class = "form-check-input">
And so on until day10 ..
</form>
Javascript:
$(document).ready(function(){
$('#day1,#day2,#day3').click(function(){
var id = $('#prezente').attr('uid');
var day1 = $('input[name=day1]:checked').val();
var day2 = $('input[name=day2]:checked').val();
var day3 = $('input[name=day3]:checked').val();
$.ajax({
url: 'sql/add-days.php?uid='+id,
type: 'post',
data: { day1: day1,day2: day2,day3: day3 },
success:function(data){
alert("success");
}
});
});
});
файл add-days.php:
// Make a MySQL Connection
$db = mysqli_connect("localhost", "stelelea_anapp", "fidodido", "stelelea_anadanceapp");
$day1 = $_POST['day1'];
$day2 = $_POST['day2'];
$day3 = $_POST['day3'];
$uid = $_GET['uid'];
$query = mysqli_query($db,"UPDATE `inscrieri` SET day1='$day1',day2='$day2',day3='$day3' WHERE id = $uid");
Вот как выглядят мои флажки, один серкл представляет день:

Да, точно..
Я не вижу в вашем вопросе ничего, что могло бы вызвать это. Это именно тот код, который есть у вас в js и php?
Хоть один вопрос. uid = "<?php echo $row['id'];?>"> создает впечатление, что у вас может быть несколько таких форм на странице?
да, это код, если я поставлю флажок для идентификатора пользователя 2, он говорит, что у пользователя есть идентификатор 1 и так далее .. для всех пользователей он захватывает только идентификатор 1
да @Taplar, несколько форм с флажками для всех пользователей
Хорошо, похоже, вы повторяете идентификаторы. Ожидается, что идентификаторы будут уникальными для каждой страницы. Вам нужно изменить эту логику, чтобы вместо этого использовать классы, что позволит вам выполнять логику, которую вы пытаетесь сделать.
Я пробовал это и ничего. Я не очень хорошо разбираюсь в коде, но вижу, что он сохраняет в базе данных только флажки идентификатора пользователя №1, даже если я нажимаю на флажки идентификатора пользователя 2,3 и так далее .. это говорит, что все они имеют идентификатор 1
Взгляните на мой ответ. Я преобразовал его для использования классов и поиска связанных полей с помощью контекстного поиска.
Также изменил его по умолчанию на 0, если флажок не установлен, поэтому серверная часть не пытается вставить 'undefined' @Fido



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Изменены html и javascript для использования классов с контекстным поиском.
$(document).ready(function() {
//bind on the shared class so you don't have to look for multiple ids or classes
$('.day').click(function() {
//get the form that is the parent of the day clicked
var $form = $(this).closest('.prezente');
//get the id of the form
var id = $form.attr('uid');
//get the days that belong to the form
//if the field is not checked, it would not be found and would return
// undefined for the val(), in which case we can default to 0
var day1 = $form.find('.day1:checked').val() || 0;
var day2 = $form.find('.day2:checked').val() || 0;
var day3 = $form.find('.day3:checked').val() || 0;
$.ajax({
url: 'sql/add-days.php?uid=' + id,
type: 'post',
data: {
day1: day1,
day2: day2,
day3: day3
},
success: function(data) {
alert("success");
}
});
});
});<form method = "post" action = "" class = "prezente" uid = "<?php echo $row['id'];?>">
<input type = "checkbox" name = "day1" value = "1" class = "day day1 form-check-input">
<input type = "checkbox" name = "day2" value = "1" class = "day day2 form-check-input">
<input type = "checkbox" name = "day3" value = "1" class = "day day3 form-check-input">
</form>
То есть вы говорите, что если первый установленный вами флажок - №4, он не обновляет ни один из них?