При выгрузке различных данных из БД иногда требуется делать проверку, нажат ли был чекбокс в базе или нет. Рассмотрим способ решения данной задачи, а также запись отмеченных/не отмеченных чекбоксов обратно в БД.
Пусть в БД есть таблица category, в которой поле opybl = 1, когда чекбокс нажат и = 0, когда не нажат.
Выгрузим из БД чекбоксы:
<form action="" method="post">
<?php
$result2 = mysql_query("select * from category");
while ($row2=mysql_fetch_array($result2)) {
echo '<input type="checkbox" value="'.htmlspecialchars($row2['id']).'" name="redcodeviborsaitov[]" '; if($row['opybl'] == 1) echo ' checked="checked"'; echo'> '.htmlspecialchars($row2['name']);
}
?>
<input type="submit" value="Подтвердить" name="butredcodedelsaiti">
</form>
Мы создали форму, внутри которой отмечаем нажатые и не нажатые чекбоксы. Имя чекбоксов redcodeviborsaitov[] равно массиву + проверяем нажат ли чекбокс. Если да, то ставим атрибут checked="checked".
Теперь представим ситуацию, что требуется обратно передать все значения чекбоксов с формы в БД (UPDATE), используя в качестве имени всех чекбоксов его массив (redcodeviborsaitov[]):
<?php
//Записываем в БД
if (isset($_POST['butredcodedelsaiti'])) {
$redcodeviborsaitov = $_POST["redcodeviborsaitov"];
for($a = 0; $a<count($redcodeviborsaitov); $a++) {
mysql_query("UPDATE crmmen_blocksaiti SET zablokirovan = '1' WHERE id = '".$redcodeviborsaitov[$a]."'");
}
}
?>
В этом коде передаются с формы только те чекбоксы, которые отмечены галочкой. В них мы берем уникальный "id" ($redcodeviborsaitov[$a]), который передается в value. Кстати, ранее я писал о том, как работать с чекбоксами, если их имя является массивом. Там вы найдете и другую полезную информацию.
Добавить комментарий