Если я загружаю флажки из базы данных и снимаю флажок после отправки, он все еще отмечен - PullRequest
0 голосов
/ 08 января 2020

Снятие отметки и проверка после отправки работает, если я не использую эту строку кода для загрузки данных, все работает. echo ($extraServices == 'Park') ? "checked='checked'" : (($extraServices == 'Park,Electricity') ?

<input type="checkbox" name="services[]" value="Park" <?php
echo ($extraServices == 'Park') ? "checked='checked'" : (($extraServices == 'Park,Electricity')  ? "checked='checked'" : "");
if(isset($_POST['services'])) {
    if(in_array("Park", $_POST['services'])) {
       echo "checked='checked'";
    }
}
?>> Park

Так что теперь, если вы используете echo "checked='checked'"; и echo ($extraServices == 'Park') ? "checked='checked'" : (($extraServices == 'Park,Electricity') ? "checked='checked'" : ""); вместе. Не работает Таким образом, с помощью этого кода он будет загружать данные из базы данных, на которой установлен флажок. Это работает. Но если я сниму флажок, он не будет снят после отправки. Как я могу решить это? Я думал о способе определить, загружаю ли я эту страницу впервые. Но затем я столкнулся с проблемой, которая была для загрузки страницы в первый раз.

Я хотел придумать что-нибудь, чтобы обнаружить, загружает ли страница и загружает ли данные. После этого не нужно загружать данные из базы данных. Но я не знаю, как я мог это сделать.

Я не знаю, что теперь делать, надеюсь, у кого-то есть идеи?

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 08 января 2020

Сложнее кодировать сложные тесты типа if this or that or the other как простой фрагмент php, чем пытаться похоронить тесты в какой-то html. Это становится недостижимым очень быстро. Также не рекомендуется объединять троичные тесты вместе.

Поэтому создайте пустую переменную и затем заполните ее checked=checked, если правила говорят, что ее следует проверить

<?php
$chk = '';
// here are the rules for setting the checked attribute
if ( ($extraServices == 'Park') || ($extraServices == 'Park,Electricity') ) { 
    $chk = 'checked=checked';
}
?>
<input type="checkbox" name="services[]" value="Park" <?php echo $chk;?> >

Так что HTML добавит $chk всегда, но если это не требуется, $chk будет просто пустым:)

Если я что-то пропустил, это, по крайней мере, должно направить вас на правильный путь. Оставьте комментарий ниже, если вам нужно что-то более подробное объяснение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...