it-swarm.com.ru

PHP Множественный массив флажков

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

38
Darek Gajda
<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

65
cryptic ツ

добавить [] в имя атрибута во входном теге

 <form action="" name="frm" method="post">
<input type="checkbox" name="hobby[]" value="coding">  coding &nbsp
<input type="checkbox" name="hobby[]" value="database">  database &nbsp
<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 />";
        }
}
?>
20
Rawnay

Вам нужно использовать квадратные скобки, чтобы значения отправлялись в виде массива:

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

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

4
Martin Bean

Попробуйте это, для 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);
}     
?>
2
Chaitanya Bhojne
if (isset($_POST['submit'])) {

for($i = 0; $i<= 3; $i++){

    if(isset($_POST['books'][$i]))

        $book .= ' '.$_POST['books'][$i];
}
0
Siddharth Shukla