Вложенные циклы и инструкции в PHP

#php #jquery #ajax #loops #nested

#php #jquery #ajax #циклы #вложенный

Вопрос:

У меня есть этот код, и я хочу добавить флажок в соответствии с полученным номером из базы данных с помощью PHP, и при нажатии на флажок обновлять поле в базе данных с помощью jQuery, это работает для 1 флажка, но это не может работать для большего количества флажков, а также мой цикл PHP не работает как я могу добавить флажок с циклами, и когда пользователь нажимает на любой флажок, обновляет свое собственное поле в базе данных, кто-нибудь может решить мою проблему?

Мой код jQuery:

 $(document).ready(function () {
    $('#mycheckbox').change(function () {
        var returnVal = ("Are "   "you sure?");
        if (returnVal) {
            postToServer($(this).prop("checked"));

        } else {
            $(this).prop("checked", !$(this).is(":checked"));
        }
    });
    function postToServer(state) {
        let value = (state) ? 1 : 0;

        $.ajax({
            type: 'POST',
            url: 'checkbox.php',
            data: {'value':  value},
            success: function (response) {
                //handle response
            }
        });
    }
}
  

и мой PHP-код:

 $sql1="SELECT * FROM `users` ";
$result1= mysqli_query($conn,$sql1);
$row1=mysqli_fetch_assoc($result1);
$lights=$row1["lights"];
for ($i=0; $i < $lights; $i  ){
    if ($row["value"]=='1'){
        echo "<input type="checkbox" class="checkbox" id="mycheckbox" checked="checked">";
    } else {
        echo "<input type="checkbox" class="checkbox" id="mycheckbox" >";
    }
}
  

Комментарии:

1. Вы показали не весь свой код jQuery. Кроме того, все ваши флажки имеют одинаковый идентификатор, который не разрешен в HTML. Может быть, что-то вроде id="mycheckbox{$i}" было бы лучше?

2. Я сделал это, но не ответил Это мой первый код jQuery: $ (document). готово(функция () { $(‘#mycheckbox’).изменить(функция () { @GregSchmidt

3. как называется столбец в базе данных, который определяет, должен ли быть установлен флажок

4. имя поля — ‘value’ @FestusYuma

5. я отредактирую свой ответ, надеюсь, это поможет @mehdiMollazehi

Ответ №1:

Это должно устранить проблему с тем, что ваш цикл не выполняется, и должно вывести флажок для каждого пользователя

 $users= mysqli_query($conn, "SELECT * FROM user");
while($row = mysqli_fetch_assoc($users)) {
    if ($row["value"]=='1'){
       echo '<input type="checkbox" class="checkbox" id="mycheckbox-'.$row["id"].'" checked="checked">';
    }else {
        echo '<input type="checkbox" class="checkbox" id="mycheckbox-'.$row["id"].'" >';
    }
}
  

Добавлен идентификатор пользователя к каждому идентификатору флажка, чтобы у каждого из них был уникальный идентификатор

Ответ №2:

 $(document).ready(function () {
    $('.checkbox').change(function () {	
        var returnVal = confirm("Are you sure?");
		if (returnVal == true) {
            postToServer($(this).val());

        } else {
            $(this).prop("checked", !$(this).is(":checked"));
        }
    });
    function postToServer(state) {
        let value = state;

        $.ajax({
            type: 'POST',
            url: 'checkbox.php',
            data: {'value': value},
            success: function (response) {
                //handle response
            }
        });
    }
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>  

PHP-код :

 <?php
$query = "SELECT * FROM users";
$result = mysqli_query($con,$query);    
while($row = mysqli_fetch_array($result) ){
?>
	<input type="checkbox" class="checkbox" value="<?php echo $row["id"] ?>">
<?php	
    }
?>