Программное управление состоянием флажка

erni74

Пользователь
Регистрация
03.04.14
Сообщения
2
Реакции
0
Баллы
1
Я относительно новичок в PHP, и мне сложно управлять флажками в моих формах.
У меня есть группа из 6 связанных флажков в форме - в форме есть и другие несвязанные флажки - и я хочу, чтобы все шесть связанных флажков были установлены изначально. Когда пользователь заполняет форму, он вполне может снять один или все шесть флажков, и это нормально.

Различные изменения происходят в различных текстовых полях и текстовых областях моей формы, и любая ошибка приведет к повторному отображению формы с соответствующими сообщениями об ошибках. Когда я повторно отображаю форму, я хочу, чтобы все связанные флажки отображались в правильном состоянии. Например, если первый и третий флажки были сняты пользователем, я хочу, чтобы они отображались неотмеченными при повторном отображении формы. Если все они не отмечены флажками, я хочу, чтобы они все были не отмечены флажками при повторном отображении формы.

Я могу достаточно легко инициализировать флажки для проверки, просто включив слово «проверено» в исходный HTML, но у меня действительно возникают проблемы с поиском способа программного отключения (или включения) флажка, не прибегая к JQuery или JavaScript, оба из которых чего я хочу избежать, если это возможно. (Я пытаюсь заставить эти формы работать для пользователей, которые по какой-либо причине отказываются включать JavaScript.)

Может ли кто-нибудь сказать мне, как включать или выключать флажки, если они уже установлены?
Программное управление состоянием флажка
 

isanki

Пользователь
Регистрация
01.01.70
Сообщения
1
Реакции
0
Баллы
1
Адрес
USA
О, теперь я понял. Используйте этот код.
К проверке $_POST[submit] добавлен оператор else.
При первой загрузке это значение не будет установлено, поэтому мы можем использовать это состояние для установки флажков.

if(isset($_POST["отправить"])){


}else{ //форма еще не была отправлена ни разу. Это первая загрузка

for($x=1; $x<5; ++$x){
$POST["cc"][$x]='Вашезначение_здесь';
}

}//проверка отправки заканчивается здесь



Распечатать '

';
for($x=1; $x<5; ++$x){
if ( isset($_POST["cc"][$x])){ $type="checked"; }else{ $type=""; }
echo ' Коробка '.$x.'
';
}

Распечатать '


';
 

Freil

Пользователь
Регистрация
16.05.12
Сообщения
3
Реакции
0
Баллы
1
Адрес
Москва
Попробуйте этот код.
По сути, когда отправляется группа флажков, PHP получает данные в массиве. Вы можете проверить этот массив, чтобы узнать, существует ли текущий элемент массива или нет, и соответственно установить или снять флажки.

Поместите этот код в файл PHP, отметьте несколько флажков и нажмите кнопку «Отправить».
При следующей загрузке те же галочки будут отмечены.

if(isset($_POST["отправить"])){



}

Распечатать '

';
for($x=1; $x<5; ++$x){
if( isset($_POST["cc"][$x])){ $type="checked"; }else{ $type=""; }
echo ' Коробка '.$x.'
';
}

Распечатать '


';
 

Herurg1

Пользователь
Регистрация
22.04.14
Сообщения
2
Реакции
0
Баллы
1
Спасибо за это предложение, Джит. На самом деле это очень близко к тому, что я придумал сам, за исключением одной фундаментальной проблемы: я не могу понять, как убедиться, что флажки изначально установлены. Когда я закодировал его так, как вы предлагаете, флажки изначально были сняты, а это противоположно тому, что я хочу. Такой подход гарантирует сохранение правильного состояния флажка, и это здорово, но я не понимаю, как убедиться, что флажок установлен, когда вы впервые его видите. Я думаю, что логика должна быть немного сложнее. Что-то вроде (псевдокод):
если это первый раз, когда вы представляете форму, покажите флажок отмеченным
в противном случае, если пользователь снял флажок перед последней отправкой, покажите его как не отмеченный.
иначе покажи это как отмеченное

Я не знаю, как это написать на PHP. Ты?
 

[email protected]

Пользователь
Регистрация
27.05.12
Сообщения
4
Реакции
0
Баллы
1
Спасибо за твою помощь, Джит. Я понял, что лучший способ продолжить — установить определенное значение для неотмеченных флажков во время редактирования. Если флажок имеет ЭТО значение, когда я повторно отображаю форму, чтобы показать ошибки, тогда я покажу флажок непроверенным; в противном случае я покажу его отмеченным. Это работает очень хорошо.
 

Victor_K

Пользователь
Регистрация
22.02.13
Сообщения
3
Реакции
1
Баллы
3
Итак... относительно новичок/не знает, как использовать HTML?

Добавьте проверенный атрибут и покончите с этим. Если он СУЩЕСТВУЕТ в возвращаемых данных формы, и вы повторно отображаете форму, отправьте их как соответствующее состояние наличия или отсутствия этого атрибута.



... и помните, некоторые UA не будут возвращать имя, даже если оно отмечено флажком, если нет значения, и в вашем ответе $_POST или $_GEt, если флажок не установлен, индекс даже не будет существовать, так что все, что вам ДЕЙСТВИТЕЛЬНО нужно идти после isset()

Вопрос, на который отвечает @JEET, похоже, не имеет к этому никакого отношения.
 
Сверху Снизу