<?php
/**
* Значения в массиве должны совпадать с названиями полей в таблице БД
*/
$fields = array ('table_field_a', 'table_field_b', 'table_field_c', /* ... */ 'table_field_n');
$sql = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Выполнять только для запросов типа POST
$sql_set = array ( ); // Сюда будем кидать значения полей БД
$settings = array ( ); // Тут будут значения, взятые из формы
if (!empty ($_POST['settings'])) { // Если отмечен хотя-бы 1 чекбокс, формировать массив значений
$settings = $_POST['settings'];
}
// обрабатываем каждое поле
foreach ($fields as $field) {
if (empty ($settings[$field])) { // Если чекбокс с указанным идентификатором не выбран - пишем 0
$sql_set[] = 't.' . $field . ' = 0';
} else { // если выбран - 1
$sql_set[] = 't.' . $field . ' = 1';
}
}
// Формируем запрос
$sql = sprintf ('UPDATE `my_table` AS t SET %s WHERE ...', implode (', ', $sql_set));
}
?>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<form action="/index.php" method="post">
<p><input name="settings[table_field_a]" type="checkbox" value="1" /> Значение A</p>
<p><input name="settings[table_field_b]" type="checkbox" value="1" /> Значение B</p>
<p><input name="settings[table_field_c]" type="checkbox" value="1" /> Значение C</p>
...
<p><input name="settings[table_field_n]" type="checkbox" value="1" /> Значение N</p>
<p><input name="submit" type="submit" value="Применить" /></p>
</form>
<?=$sql ? '<p>SQL: '. $sql . '</p>' : '';?>
</body>
</html>