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

  • Автор темы erni74
  • 41
  • Обновлено
  • 16, May 2024
  • #1
Я относительно новичок в PHP, и мне сложно управлять флажками в моих формах. У меня есть группа из 6 связанных флажков в форме - в форме есть и другие несвязанные флажки - и я хочу, чтобы все шесть связанных флажков были установлены изначально.

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

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

Например, если первый и третий флажки были сняты пользователем, я хочу, чтобы они отображались неотмеченными при повторном отображении формы.

Если все они не отмечены флажками, я хочу, чтобы они все были не отмечены флажками при повторном отображении формы.



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



(Я пытаюсь заставить эти формы работать для пользователей, которые по какой-либо причине отказываются включать JavaScript.) Может ли кто-нибудь сказать мне, как включать или выключать флажки, если они уже установлены?

erni74


Рег
03 Apr, 2014

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
О, теперь я понял.

Используйте этот код. К проверке $_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.' '; } Распечатать ' ';
 

isanki


Рег
01 Jan, 2011

Тем
0

Постов
1

Баллов
1
  • 21, May 2024
  • #3
Попробуйте этот код. По сути, когда отправляется группа флажков, PHP получает данные в массиве.

Вы можете проверить этот массив, чтобы узнать, существует ли текущий элемент массива или нет, и соответственно установить или снять флажки.

Поместите этот код в файл PHP, отметьте несколько флажков и нажмите кнопку «Отправить».

При следующей загрузке те же галочки будут отмечены.

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

// выполняем проверки.

}

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

';

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

Freil


Рег
16 May, 2012

Тем
1

Постов
3

Баллов
13
  • 04, Jun 2024
  • #4
Спасибо за это предложение, Джит.

На самом деле это очень близко к тому, что я придумал сам, за исключением одной фундаментальной проблемы: я не могу понять, как убедиться, что флажки изначально установлены.

Когда я закодировал его так, как вы предлагаете, флажки изначально были сняты, а это противоположно тому, что я хочу.

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

Я думаю, что логика должна быть немного сложнее.

Что-то вроде (псевдокод): если это первый раз, когда вы представляете форму, покажите флажок отмеченным в противном случае, если пользователь снял флажок перед последней отправкой, покажите его как не отмеченный. иначе покажи это как отмеченное Я не знаю, как это написать на PHP.

Ты?
 

Herurg1


Рег
21 Apr, 2014

Тем
1

Постов
2

Баллов
12
  • 11, Jun 2024
  • #5
Спасибо за твою помощь, Джит.

Я понял, что лучший способ продолжить — установить определенное значение для неотмеченных флажков во время редактирования.

Если флажок имеет ЭТО значение, когда я повторно отображаю форму, чтобы показать ошибки, тогда я покажу флажок непроверенным; в противном случае я покажу его отмеченным.

Это работает очень хорошо.
 

[email protected]


Рег
27 May, 2012

Тем
1

Постов
4

Баллов
14
  • 13, Jun 2024
  • #6
Итак.

относительно новичок/не знает, как использовать HTML? Добавьте проверенный атрибут и покончите с этим.

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

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

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

Victor_K


Рег
22 Feb, 2013

Тем
1

Постов
3

Баллов
13
Тем
49554
Комментарии
57426
Опыт
552966

Интересно