Récupérer la saisie : cases à cocher et select multiple

1 message   •   Page 1 sur 1
Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

01 juil. 2005, 10:16

Vous savez récupérer des variables envoyées par un formulaire dans votre script PHP.
Mais un problème se pose lorsque vous souhaitez intégrer des cases à cocher (checkbox) dans un formulaire :
ces cases représentent plusieurs choix possibles pour une même proposition, il est donc normal qu'elles aient le même nom.

Seulement, vous récupérerez à ce moment-là une et une seule variable, ce qui ne vous permettra pas de récupérer toutes les valeurs sélectionnées.

La solution consiste à récupérer un tableau de valeurs. Ceci tout simplement en ajoutant des crochets au nom de la case à cocher.

exemple de formulaire :

Code : Tout sélectionner

<form name="formulaire1" method="POST" action="script.php"> Pour vos sites vous utilisez :<br> <input type="checkbox" name="langage[]" value="js"> le Javascript <br> <input type="checkbox" name="langage[]" value="php"> le PHP <br> <input type="checkbox" name="langage[]" value="sql"> le SQL <br> <input type="checkbox" name="langage[]" value="html"> le HTML <br> <input type="submit" name="submit" value="Envoyer"> </form>
les crochets vides vont ici créer une variable nommée "langage", sous forme de tableau indexé automatiquement et rempli avec les valeurs sélectionnées :

Nous pouvons ensuite boucler sur ce tableau et récupérer ces valeurs dans script.php :
<?php
// vérifions que la variable a été transmise
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;

echo "Voici les langages que vous avez choisi :<br>";
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($tabLangages)) {
	foreach($tabLangages as $cle => $valeur) {
		echo $cle.' : '.$valeur.'<br>';
	}
}
?>
C'est aussi valable pour les listes déroulantes à choix multiples :

Code : Tout sélectionner

<select name="langage[]" size="3" multiple>
à voir dans la documentation PHP :
la fonction foreach
la fonction empty

1 message   •   Page 1 sur 1