Хранение флажков в PHP-форме

Я знаю, как проверить флажки в форме submit при возникновении ошибки, но сейчас у меня другая проблема. Я использую флажки с тем же именем, где люди могут нажать 1 или несколько. Я хочу, чтобы он сохранял только флажки, которые пользователь проверил, заполненный, если есть проблема, например, если они проверяют q1 A q1B, но не q1c. Я хочу, чтобы только q1 A и Q1b отображались при перезагрузке при ошибке. В настоящий момент по ошибке отмечены все флажки с одинаковыми именами. Я попытался изменить имя на q1 [], но это не сработало. Не могли бы вы взглянуть и дать мне знать, как это исправить?

Вот мой код.

<tr> <td style="width: 124px" class="style15">Tape Recorder<?php if(isset($problems['tape[]'])) {?><font color="red">*</font><?php } ?></td> <td class="style9"> <input name="tape[]" id="tape1" type="checkbox" value="used before," <?php if(isset($_POST['tape[]'])) echo "checked"; ?> </td> <td class="style9"> <input name="tape[]" id="tape2" type="checkbox" value="helpful in past," <?php if(isset($_POST['tape[]'])) echo "checked"; ?> </td> <td class="style9"> <input name="tape[]" id="tape3" type="checkbox" value="requesting from DACC" <?php if(isset($_POST['tape[]'])) echo "checked"; ?> </td> <td class="style9"> <input name="tape[]" id="tape4" type="checkbox" value="NA" <?php if(isset($_POST['tape[]'])) echo "checked"; ?></td> </tr> <tr> <td style="width: 124px">Note Taker <?php if(isset($problems['note'])) {?> <font color="red">*</font><?php } ?></td> <td class="style9"> <input name="note" type="checkbox" value="used before," <?php if(isset($_POST['note'])) echo "checked"; ?> </td> <td class="style9"> <input name="note" type="checkbox" value= "been helpful in the past," <?php if(isset($_POST['note'])) echo "checked"; ?> <td class="style9"> <input name="note" type="checkbox" value= "requesting from DACC" <?php if(isset($_POST['note'])) echo "checked"; ?> <td class="style9"> <input name="note" type="checkbox" value="NA" <?php if(isset($_POST['note'])) echo "checked"; ?> </tr> 

Быстрое и грязное решение было бы:

 <input name="tape[]" id="tape[]" type="checkbox" value="NA" <?php if(isset($_POST['tape']) && is_array($_POST['tape']) && in_array('NA', $_POST['tape'])) echo 'checked="checked"'; ?> /> 

Для этого вам нужно изменить часть «NA» для каждого разного ответа. Хотя я бы посмотрел на что-то вроде цикла для повторных флажков или функции обратного вызова, чтобы определить, следует ли checked=checked echo checked=checked .

Спасибо, г-н Кодекс. Вот мой последний код, который я смог выяснить благодаря вам

 $mailBody .= "They requested additional information on ...\n\n"; $mailBody .= $moreinfo = join("\n", $_REQUEST["moreinfo"]); $mailBody .= "\n\n"; $mailBody .= "They also had this to say...\n\n"; $mailBody .= "$comments\n\n"; 

// код на странице

 <input type="checkbox" name="moreinfo[selection1]" value="selection1" <?php if(isset($_POST['moreinfo']) && is_array($_POST['moreinfo']) && in_array('selection1', $_POST['moreinfo'])) echo 'checked="checked"'; ?> /> Selection 1<br> <input type="checkbox" name="moreinfo[selection2]" value="selection2" <?php if(isset($_POST['moreinfo']) && is_array($_POST['moreinfo']) && in_array('selection2', $_POST['moreinfo'])) echo 'checked="checked"'; ?> /> Selection 2<br> <input type="checkbox" name="moreinfo[selection3]" value="selection3" <?php if(isset($_POST['moreinfo']) && is_array($_POST['moreinfo']) && in_array('selection3', $_POST['moreinfo'])) echo 'checked="checked"'; ?> /> Selection 3<br> 

Мне все равно, что это выглядит сумасшедшим, потому что это работает.

Вам необязательно иметь одно и то же имя для флажков, только для переключателей.

Радиокнопки принадлежат группе, поэтому они должны иметь одно и то же имя, но разные значения. Однако флажки могут иметь разные имена для каждого флажка! Поэтому просто измените каждый флажок на другое имя