Я изо всех сил пытаюсь выяснить синтаксически правильный способ добавления к этим операторам переменных и строк:
/ * ХОТИТЕ ДОБАВИТЬ ПЯТЬ БОЛЬШЕ $ _POST [''] * /
if(isset($_POST['check_prof']) && $_POST['check_prof'] == 'checked') { $check_prof = "checked"; }else{ $check_prof = "unchecked"; }
/ * ТО ЖЕ ЗДЕСЬ, ХОТИТЕ ДОБАВИТЬ ДРУГОЙ ПЯТЬ ЗДЕСЬ ТАК ЖЕ * * /
$query = "UPDATE `Users` SET `check_prof` = '" . $check_prof . "' WHERE `id` = '" . $auth->id . "' LIMIT 1"; mysql_query($query,$connection); $auth->refresh(); }
Вы имеете в виду это?
$fields = array('check_prof', 'check_this', 'check_that', 'check_whatever'); foreach($fields as $field){ isset($_POST[$field] && $_POST[$field] == 'checked')){ $$field='checked'; } else { $$field='unchecked'; } $query = "UPDATE `Users` SET `$field` = '" . $$field . "' WHERE `id` = '" . $auth->id . "' LIMIT 1"; mysql_query($query,$connection); $auth->refresh(); }
Кстати, вместо хранения «checked» и «unchecked» в вашей базе данных (как varchar) вы можете сохранить его как тип tinyint (1) и просто использовать 0 или 1. Это займет меньше места.
Другое дело, это сделает отдельный запрос для каждого поля. Эффективно написать один запрос для внесения изменений для всех полей, если производительность является проблемой.
Предполагая, что я понимаю, что вы имеете в виду, попробуйте следующее:
<?php $arr = array('check_prof' => 'unchecked', 'check_student' => 'unchecked'); foreach($arr as $field => $checked) { if (isset($_POST[$field]) && $_POST[$field] == 'checked') { $arr[$field] = 'checked'; } // I don't know where $auth is coming from $query = "UPDATE `Users` SET `$field` = '" . $arr[$field] . "' WHERE `id` = '" . $auth->id . "' LIMIT 1"; mysql_query($query,$connection); $auth->refresh(); } ?>
Вам просто нужно было бы добавлять поля по мере необходимости к $arr
для его прокрутки.