Список флажков в форме берется из базы данных, которая содержит имя, используемое для поля имени флажка, и отображаемый текст.
Код: Выделить всё
>
Оттуда редактирование документа вступает во владение, когда форма публикуется (как обычно), и там я проверяю каждую службу (по имени службы, поскольку оно поступает из базы данных в полях флажков), установлен ли флажок или нет:
Код: Выделить всё
$checkboxes_array = array();
$unset_value = array();
if (isset($_POST['Service1'])) {
$checkboxes_array[] = 'Service1';
} else {
$unset_values[] = 'Service1';
}
if (isset($_POST['My Service2'])) {
$checkboxes_array[] = 'My Service2';
} else {
$unset_values[] = 'My Service2';
}
if (isset($_POST['Service3'])) {
$checkboxes_array[] = 'Service3';
} else {
$unset_values[] = 'Service3';
}
Код: Выделить всё
foreach ($checkboxes_array as &$checkbox){
$button_set_results = mysqli_query($conn, "SELECT * FROM buttons_allowed INNER JOIN buttons ON buttons_allowed.buttons_allowed_button_id=buttons.button_id WHERE (buttons_allowed_userid) IN ('".$userId."') AND (Service) IN ('".$checkbox."') ");
while ($rows = mysqli_fetch_array($button_set_results)){
$button_set_service = $rows['Service'];
$update = mysqli_query($conn, "UPDATE buttons_allowed INNER JOIN buttons ON buttons_allowed.buttons_allowed_button_id=buttons.button_id set buttons_allowed_activated = 1 where Service = '".$button_set_service."' and buttons_allowed_userid = '".$userId."' ");
}
}
foreach( $unset_values as &$unset_value ){
$button_unset_results = mysqli_query($conn, "SELECT * FROM buttons_allowed INNER JOIN buttons ON buttons_allowed.buttons_allowed_button_id=buttons.button_id WHERE (buttons_allowed_userid) IN ('".$userId."') AND (Service) IN ('".$unset_value."') ");
while ($rows = mysqli_fetch_array($button_unset_results)){
$button_unset_service = $rows['Service'];
$update = mysqli_query($conn, "UPDATE buttons_allowed INNER JOIN buttons ON buttons_allowed.buttons_allowed_button_id=buttons.button_id set buttons_allowed_activated = 0 where Service = '".$button_unset_service."' and buttons_allowed_userid = '".$userId."' ");
}
}
Что мне здесь не хватает или что я делаю неправильно?
Я проверил, верны ли значения в массивах и соответствуют ли они столбцу «Служба».
Я попробовал вызов в самой базе данных, и это работает нормально, и фактически устанавливает значение 1, как и должно быть:
Код: Выделить всё
UPDATE buttons_allowed INNER JOIN buttons ON buttons_allowed.buttons_allowed_button_id=buttons.button_id set buttons_allowed_activated = 1 where Service = 'My Service2' and buttons_allowed_userid = '{user id for testing purposes}'
buttons_allowed_id
buttons_allowed_userid
buttons_allowed_button_id
buttons_allowed_activated
button_id
Сервис
button_href
button_type
19
28
1
0
1
Plex
{HTML-код кнопки для Plex
медиа
20
28
2
1
2
Ombi
{HTML-код кнопки для Ombi
СМИ
25
28
7
0
7
Домашний помощник
{HTML-код кнопки для Home Assistant
сервера
28
28
10
0
10Основной Pi-Hole
{HTML-код кнопки для основного сервера Pi-Hole
сервера
Код: Выделить всё
var_dump()Код: Выделить всё
string(4) "Plex" bool(true) string(4) "Ombi" bool(true) string(14) "Home Assistant" bool(false) string(12) "Pi-Hole Main" bool(false)
Подробнее здесь: https://stackoverflow.com/questions/784 ... p-variable
Мобильная версия