Я рассмотрел несколько примеров здесь, но многие из них либо слишком продвинуты для понимания PHP, либо их примеры слишком специфичны для их собственных проектов. В настоящее время я борюсь с очень простой частью формы PHP.
Я пытаюсь создать форму с несколькими флажками, каждому присваивается другое значение, я хочу, чтобы они были отправлены в переменную (массив?), Которую я могу повторить / использовать позже, в моем случае я отправлю проверенные значения в электронное письмо.
До сих пор я пробовал несколько вариантов, но ближайший я пришел к этому, это …
<form method='post' id='userform' action='thisform.php'> <tr> <td>Trouble Type</td> <td> <input type='checkbox' name='checkboxvar' value='Option One'>1<br> <input type='checkbox' name='checkboxvar' value='Option Two'>2<br> <input type='checkbox' name='checkboxvar' value='Option Three'>3 </td> </tr> </table> <input type='submit' class='buttons'> </form> <?php $checkboxvar[] = $_REQUEST['checkboxvar']; ?>
Где бы я выбрал $ checkboxvar [] в своем письме. Неужели я об этом совершенно не так? Другая идея, которую я имел, заключалась в том, чтобы использовать множество утверждений if.
<form method='post' id='userform' action='thisform.php'> <tr> <td>Trouble Type</td> <td> <input type='checkbox' name='checkboxvar[]' value='Option One'>1<br> <input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br> <input type='checkbox' name='checkboxvar[]' value='Option Three'>3 </td> </tr> </table> <input type='submit' class='buttons'> </form> <?php if (isset($_POST['checkboxvar'])) { print_r($_POST['checkboxvar']); } ?>
Вы передаете имя формы в виде массива, а затем можете получить доступ ко всем отмеченным ячейкам, используя сам var, который затем будет массивом.
Чтобы выполнить эхо-проверку в вашем электронном письме, вы должны сделать следующее:
echo implode(',', $_POST['checkboxvar']); // change the comma to whatever separator you want
Пожалуйста, имейте в виду, что вы всегда должны дезинфицировать свой вход по мере необходимости.
Для записи официальные документы на этом существуют: http://php.net/manual/en/faq.html.php#faq.html.arrays
добавьте []
в имя атрибутов во входном теге
<form action="" name="frm" method="post"> <input type="checkbox" name="hobby[]" value="coding"> coding   <input type="checkbox" name="hobby[]" value="database"> database   <input type="checkbox" name="hobby[]" value="software engineer"> soft Engineering <br> <input type="submit" name="submit" value="submit"> </form>
для PHP-кода:
<?php if(isset($_POST['submit']){ $hobby = $_POST['hobby']; foreach ($hobby as $hobys=>$value) { echo "Hobby : ".$value."<br />"; } } ?>
Вы должны использовать обозначение квадратных скобок, чтобы иметь значения, отправленные как массив:
<form method='post' id='userform' action='thisform.php'> <tr> <td>Trouble Type</td> <td> <input type='checkbox' name='checkboxvar[]' value='Option One'>1<br> <input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br> <input type='checkbox' name='checkboxvar[]' value='Option Three'>3 </td> </tr> </table> <input type='submit' class='buttons'> </form>
Обратите внимание, однако, что будут отправлены только значения только отмеченных флажков.
Попробуйте это, для Loop
<form method="post"> <?php for ($i=1; $i <5 ; $i++) { echo'<input type="checkbox" value="'.$i.'" name="checkbox[]"/>'; } ?> <input type="submit" name="submit" class="form-control" value="Submit"> </form> <?php if(isset($_POST['submit'])) { $check=implode(", ", $_POST['checkbox']); print_r($check); } ?>
if (isset($_POST['submit'])) { for($i = 0; $i<= 3; $i++){ if(isset($_POST['books'][$i])) $book .= ' '.$_POST['books'][$i]; }