обновить базу данных с помощью флажка

В моей таблице базы данных есть 2 поля: id (int) и state (enum -> 0,1).

Мне нужно обновить мою базу данных (мое поле state ) с состоянием checkbox ( 0 для пустого, 1 для отмеченного).

Чтобы показать каждое из полей в моей базе данных, я использую цикл:

Loop:

 <?php foreach ( $posts_array as $module ) { ?> <h2><?php echo $module->titre; ?></h2> <input type="checkbox" name="chkbx_<?php echo $module->id; ?>"> id="chkbx_<?php echo $module->id; ?>" class="onoffswitch-checkbox"> On/Off <br /> <?php } ?> 

Мой файл обновления:

 foreach ($_GET['onoffswitch-checkbox'] as $id => $state) { // $_GET['onoffswitch-checkbox'] = class for all my checkboxed // $id = my database row id // $state = on/off $query = mysql_query("UPDATE records SET id='$id' WHERE state='$state'", $conn) or die (mysql_error($conn)); $id++; } 

Где мне нужна помощь, это часть кода AJAX. Я предполагаю, что это выглядит примерно так, но, похоже, это не работает:

AJAX

 $(document).ready(function() { $("onoffswitch-checkbox").click(function() { var id = $(this).attr('id'); $("#state_span").load("module_update.php?"+id); } } 

Я оглядывался, видел несколько примеров, где мы могли бы сделать это с помощью кнопки отправки, но нигде, где информация автоматически записывается при нажатии на этот флажок.

Попробуй это:

AJAX

 $(document).ready(function() { $(".onoffswitch-checkbox").click(function() { var id = this.id; //changed here also, just because jQuery is not needed here var state = this.checked ? 1 : 0; $("#state_span").load("module_update.php?id="+id+"&state="+state); } } 

Изменено 3 вещи:

  • добавлена ​​точка в $("onoffswitch-checkbox") поэтому теперь ее $(".onoffswitch-checkbox")
  • добавлен id= после module_update.php? и до значения id .
  • так как вам нужно state я также добавил, что также с & для разделения значений $_GET в php для их разделения

PHP

Я не знаю, что вы имеете в виду с $_GET['onoffswitch-checkbox'] в php, может быть, ошибкой? Мое предложение ни в коем случае не нуждается, и ваш запрос mysql не нужен.

Поскольку вы будете щелкать только по одному, я не вижу необходимости в цикле foreach в php, поэтому вы можете сделать это:

 $id = $_GET['id']; $state= $_GET['state']; // $_GET['onoffswitch-checkbox'] ?? I don't think you need this... // $id = my database row id // $state = on/off $query = mysql_query("UPDATE records SET id='$id' WHERE state='$state'", $conn) or die (mysql_error($conn)); $id++;