Сохранение флажков в форме PHP - PullRequest
2 голосов
/ 01 марта 2012

Я знаю, как сохранять флажки при отправке формы при возникновении ошибки, но теперь у меня другая проблема. Я использую флажки с тем же именем, где люди могут нажать 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>

Ответы [ 3 ]

6 голосов
/ 01 марта 2012

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

<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.

0 голосов
/ 02 марта 2013

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

$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>

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

0 голосов
/ 01 марта 2012

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

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

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