Флажки на основе идентификатора пользователя, он сохраняет только один идентификатор из всех флажков

У меня есть форма с 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");

Вот как выглядят мои флажки, один серкл представляет день:

Флажки на основе идентификатора пользователя, он сохраняет только один идентификатор из всех флажков

То есть вы говорите, что если первый установленный вами флажок - №4, он не обновляет ни один из них?

Taplar 07.09.2018 23:03

Да, точно..

Fido 07.09.2018 23:04

Я не вижу в вашем вопросе ничего, что могло бы вызвать это. Это именно тот код, который есть у вас в js и php?

Taplar 07.09.2018 23:06

Хоть один вопрос. uid = "<?php echo $row['id'];?>"> создает впечатление, что у вас может быть несколько таких форм на странице?

Taplar 07.09.2018 23:08

да, это код, если я поставлю флажок для идентификатора пользователя 2, он говорит, что у пользователя есть идентификатор 1 и так далее .. для всех пользователей он захватывает только идентификатор 1

Fido 07.09.2018 23:09

да @Taplar, несколько форм с флажками для всех пользователей

Fido 07.09.2018 23:10

Хорошо, похоже, вы повторяете идентификаторы. Ожидается, что идентификаторы будут уникальными для каждой страницы. Вам нужно изменить эту логику, чтобы вместо этого использовать классы, что позволит вам выполнять логику, которую вы пытаетесь сделать.

Taplar 07.09.2018 23:10

Я пробовал это и ничего. Я не очень хорошо разбираюсь в коде, но вижу, что он сохраняет в базе данных только флажки идентификатора пользователя №1, даже если я нажимаю на флажки идентификатора пользователя 2,3 и так далее .. это говорит, что все они имеют идентификатор 1

Fido 07.09.2018 23:16

Взгляните на мой ответ. Я преобразовал его для использования классов и поиска связанных полей с помощью контекстного поиска.

Taplar 07.09.2018 23:17

Также изменил его по умолчанию на 0, если флажок не установлен, поэтому серверная часть не пытается вставить 'undefined' @Fido

Taplar 07.09.2018 23:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
10
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Изменены 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>

Другие вопросы по теме