Tableau de cases à cocher multiples PHP

J'ai cherché quelques exemples ici, mais beaucoup d'entre eux sont trop avancés pour ma compréhension de PHP ou leurs exemples sont trop spécifiques à leurs propres projets. Je suis actuellement aux prises avec une partie très basique d'un formulaire PHP.

J'essaie de créer un formulaire avec quelques cases à cocher, chacune assignée une valeur différente, je veux que ceux-ci soient envoyés à une variable (tableau?) que je peux echo / utiliser plus tard, dans mon cas, je vais envoyer les valeurs vérifiées dans un e-mail.

Jusqu'à présent, j'ai essayé quelques variations, mais le plus proche que je suis venu à elle est celle-ci...

<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'];
?>

Où je ferais écho $checkboxvar [] dans mon e-mail. Je suis aller sur ce complètement faux? L'autre idée que j'avais était d'utiliser beaucoup de if.

37
demandé sur Darek Gajda 2012-12-25 03:06:38

5 réponses

<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']); 
}
?>

Vous passez le nom du formulaire en tant que tableau et vous pouvez accéder à toutes les cases à cocher en utilisant le var lui-même qui serait alors un tableau.

Pour faire écho aux options vérifiées dans votre e-mail, vous feriez alors ceci:

echo implode(',', $_POST['checkboxvar']); // change the comma to whatever separator you want

Veuillez garder à l'esprit que vous devriez toujours désinfecter votre entrée au besoin.

Pour mémoire, il existe des documents officiels à ce sujet: http://php.net/manual/en/faq.html.php#faq.html.arrays

62
répondu cryptic ツ 2015-07-09 15:05:52

Ajouter [] dans le nom des attributs dans la balise input

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

Pour le Code PHP:

<?php
 if(isset($_POST['submit']){
   $hobby = $_POST['hobby'];

   foreach ($hobby as $hobys=>$value) {
             echo "Hobby : ".$value."<br />";
        }
}
?>
19
répondu Rawnay 2013-11-01 20:01:53

Vous devez utiliser la notation entre crochets pour avoir des valeurs envoyées sous forme de tableau:

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

Veuillez noter cependant que seules les valeurs des cases à cocher seulement cochées seront envoyées.

3
répondu Martin Bean 2012-12-24 23:09:12

Essayez ceci, par pour la boucle

<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
répondu Chaitanya Bhojne 2017-04-19 07:38:17
if (isset($_POST['submit'])) {

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

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

        $book .= ' '.$_POST['books'][$i];
}
0
répondu Siddharth Shukla 2016-10-06 14:27:52