PHP цикл через массив флажков, чтобы показать значения - PullRequest
0 голосов
/ 25 февраля 2011

Как мне перебрать массив флажков, чтобы он отображал каждое значение?

Оригинальный код:

  <form class="form" method="POST" action="index.php?id=22">
<? if (!$_POST['step']) { ?>
<input type="hidden" name="step" value="1" />
        <tr>
      <td width="300" valign="top"><label style="margin-right: 25px;">
          <input style="width: 25px;" type="checkbox" name="CheckboxGroup2" value="Pharmaceuticals" id="member3_pharma" />Pharmaceuticals</label>
        &nbsp;&nbsp;&nbsp;</td>
      <td width="300" valign="top"><label style="margin-right: 25px;">
          <input style="width: 25px;" type="checkbox" name="CheckboxGroup2" value="Medical Devices" id="member3_devices" />
          Medical Devices</label>
        &nbsp;&nbsp;&nbsp;</td>
      <td width="300" valign="top"><label style="margin-right: 25px;">
          <input style="width: 25px;" type="checkbox" name="CheckboxGroup2" value="Legal" id="member3_legal" />
          Legal</label>
        &nbsp;&nbsp;&nbsp;</td>
    </tr>
    <button class="blue medium awesome awesomeforward" style="margin: 10px; float: right;" type="submit" name="submit">Next step</button>
<? } else if ($_POST['step'] == 3) {

foreach($_POST as $name => $value) {
    if ($name <> "step") { echo "<input type=\"hidden\" name=\"$name\" value=\"$value\" />"; }
}

?>
        <tr>
      <td><label for="member4_total">Total no. employees (Welsh Site)</label></td>
      <td>&nbsp;</td>
      <td><input type="text" name="member4_total" id="member4_total" /></td>
    </tr>
    <tr>
      <td><label for="member4_turnover">Turnover (from Welsh site)</label></td>
      <td>&nbsp;</td>
      <td><input type="text" name="member4_turnover" id="member4_turnover" /></td>
    </tr>
    <? } else if ($_POST['step'] == 4) { //do posting and send email here! 

$to = "test@test.com";
$subject = "MediWales member application";

$CheckboxGroup2_field = $_POST['CheckboxGroup2'];

$body = "$CheckboxGroup2_field";


mail($to, $subject, $body);

echo "Thank you for your account application, we will contact you shortly.";

} ?>
  </form>

Ответы [ 4 ]

4 голосов
/ 25 февраля 2011

В духе поста @ diEcho ваша форма должна выглядеть так:

<input type='checkbox' name='CBgroup1[]' value='1'> One
<input type='checkbox' name='CBgroup1[]' value='2'> Two
<input type='checkbox' name='CBgroup1[]' value='3'> Three
<input type='checkbox' name='CBgroup1[]' value='4'> Four

<input type='checkbox' name='CBgroup2[]' value='1'> One
<input type='checkbox' name='CBgroup2[]' value='2'> Two
<input type='checkbox' name='CBgroup2[]' value='3'> Three
<input type='checkbox' name='CBgroup2[]' value='4'> Four

На сервере поле $_POST['CBgroup1'] будет представлять собой массив, а не одно значение. Вы хотите просмотреть этот массив, чтобы увидеть, какие из них проверены.

4 голосов
/ 25 февраля 2011

положить name="CheckboxGroup2[]"

и получить данные в виде массива

2 голосов
/ 01 марта 2011

Решено с:

foreach ($_SESSION['CheckboxGroup1'] as $val) {
$checkbox1results .= $val.",\n";
}
0 голосов
/ 27 февраля 2011

Вы можете использовать

if(isset($_POST['CBgroup1']))
#to ensure that $_POST[yadda] exists, otherwise you get a happy error
    if(in_array("4",$_POST['CBgroup1']))
    #searches your array for "4", if you like this make sure each value checkbox is unique
         echo "The fourth checkbox is checked.";

Я хотел это в ответ на эйканал, но я не думаю, что у меня достаточно репутации.(Пожалуйста, скажите мне, если я пропустил что-то очевидное, это мой первый пост в истории =)

...