Мне нужно отловить событие когда чекбоксы был отжаты (их может быть сколько угодно вставляются циклом в HTML таблицу), и занести его значение в таблицу MySQL. Так выглядит сама форма(лишнее убрал):
<form name="new_form" action="/admin/osvega_test" method="POST">
<input class="my_button" type="submit" name="upload_submit" value="save" style="width: 200px"/>
<table style="width: 1000;" id="activeTable" class="editableTable" overflow = "scroll">
<thead class="t_hdr">
<tr class="header">
<td><b>ID</b></td>
<td><b>Печать</b></td>
</tr>
</thead>
<tbody>
<?php
$i = 0;
while ($row = $Result->fetch_assoc()) {
$i++;
?>
<tr id="z_<?=$i?>">
<td name = "post_id"><?=$row['id']?></td>
<td>
<input type="checkbox" name="stamp[<?=$row['id']?>]" value="<?=$row['stamp']?>" <? if($row['stamp'] == 1)echo $check ?> id="chkbox" >
</td>
</tr>
<? } ?>
</tbody>
</table>
</form>
Так выглядит код обработчика:
<?php
foreach ($_POST['stamp'] as $id => $value)
{
if (isset($_POST['stamp'])){
$value = 1;
$Database->query("UPDATE `izgotoviteli` SET stamp = $value WHERE id = $id");
}
else{
$value = 0;
$Database->query("UPDATE `izgotoviteli` SET stamp = $value WHERE id = $id");
}
}
?>
То есть, если я ставлю галочки и нажимаю кнопку submit, они сохраняются в БД со значением 1(tinyint(1)), тут все работает. Нужно чтобы снятие галочки тоже отслеживалось (хотя должно) и в базу заносился 0 при ее снятии.
Для начала ты смотришь на массив $_POST['stamp'], а не на значение элемента массива $_POST['stamp'][$id]
if (isset($_POST['stamp'])) надо if (empty($_POST['stamp'][$id]))
Функция isset() всё равно вернёт TRUE даже если $_POST['stamp'][$id]=0, поэтому заменил на empty()
Попробуй так:
if (empty($_POST['stamp'][$id])) {
$value=0;
}
else {
$value=1;
}
Вроде так
А если так: в теле документа слушайте нажатие на checkbox
формы, когда юзер его анчекает - value = 0
, если снова чекает - value = data-value
(новый атрибут чекбокса, просто дублирующий значение)
document.forms.new_form.addEventListener('click', function(event) {
if (event.target.type = 'checkbox') {
if (!event.target.checked) {
event.target.value = 0;
} else {
event.target.value = event.target.dataset.value;
}
}
console.log(event.target.value);
});
<form name="new_form" action="/admin/osvega_test" method="POST">
<input type="checkbox" name="stamp[1]" data-value="73457" value="73457" checked id="chkbox" />
<input type="checkbox" name="stamp[2]" data-value="90356" value="90356" checked id="chkbox2" />
</form>
З.Ы. отредактируйте обработчик, он у вас какой-то "не такой":
if (isset($_POST['stamp'])) {
foreach ($_POST['stamp'] as $id => $value) {
$Database->query("UPDATE `izgotoviteli` SET stamp = $value WHERE id");
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите, не получаетсяКак сделать чтобы на всей кнопке в меню при наведении была бы ссылка?
Добрый деньВерстаем проект для личных целей и в мобильной версии между блоками на некоторых страницах проявляется цифра "1"
Здравствуйте, подскажите, пожалуйста, как реализовать таку задачку, нужно сделать анимацию, чтобы картинка периодически с каким-то заданным...