#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
}
?>