Page 1 sur 1

Récupérer les checkbox cochées dans une variable

Posté : 01 juin 2009, 00:18
par paul-75
Bonjour à tous,

Je suis débutant en PHP et je bute sur le problème suivant.

J'ai un formulaire avec 4 checkbox :
<input type="checkbox" name="atelier" id="atelier1" />
<label for="atelier2">atelier 2</label>
<input type="checkbox" name="atelier" id="atelier2" />
<label for="atelier3">atelier 3</label>
<input type="checkbox" name="atelier" id="atelier3" />
<label for="atelier4">atelier 4</label>
<input type="checkbox" name="atelier" id="atelier4" />
Plusieurs checkbox peuvent être cochées en même temps.

Je souhaiterais récupérer dans une variable de type string la concaténation des id des checkbox cochées, par exemple : $variable = "atelier1 atelier4"
dans le cas où ce sont les checkbox des ateliers 1 et 4 qui sont cochées.

Qqun pourrait-il m'aider SVP ?

MERCI :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 01 juin 2009, 08:11
par stopher
Salut ,

Change le nom de tes checkBox comme ceci :

Code : Tout sélectionner

<input type="checkbox" name="atelier[]" id="atelier1" value="atelier1"/> <input type="checkbox" name="atelier[]" id="atelier2" value="atelier2" /> <input type="checkbox" name="atelier[]" id="atelier3" value="atelier3" /> <input type="checkbox" name="atelier[]" id="atelier4" value="atelier4" />
Et donner une valeur à chaque Cb. sinon ils te retournent un booleen .

Ainsi , la variable $_POST['atelier'] contiendra un tableau avec les valeurs des checkbox cochés .

Ch.

Posté : 01 juin 2009, 08:57
par thehawk
ensuite pour avoir qu'une seul variable en 'string' , il te suffira d'utiliser la fonction implode()

ce qui te donnera quelque chose comme :

$variable = implode( " ", $_POST['atelier'] );


Bonne journée Hawk

Posté : 01 juin 2009, 10:04
par paul-75
Tout d'abord un grand merci à vous deux.

Il y encore un petit soucis par contre...

J'ai omis de vous dire, pour simplifier les choses, qu'il y avait un javascript derrière :

Code : Tout sélectionner

<input type="checkbox" name="atelier[]" id="atelier1" value="atelier1" onclick="CalculTarif()" /> <label for="atelier2">atelier 2</label> <input type="checkbox" name="atelier[]" id="atelier2" value="atelier2" onclick="CalculTarif()" /> <label for="atelier3">atelier 3</label> <input type="checkbox" name="atelier[]" id="atelier3" value="atelier3" onclick="CalculTarif()" /> <label for="atelier4">atelier 4</label> <input type="checkbox" name="atelier[]" id="atelier4" value="atelier4" onclick="CalculTarif()" />
Avec la fonction :

Code : Tout sélectionner

function CalculTarif() { // Tarifs adhérents (0,1,2,3,4 ateliers) o=[0,15,30,45,50]; // Tarif non adhérents (0,1,2,3,4 ateliers) n=[0,30,60,90,100]; // // - Calcul du nombre d'Ateliers => i // var i=0; for(j=0; j<4; j++) { if(document.inscription.atelier[j].checked) {i++;} } // //- récupération du Montant correspondant // if (document.getElementById('oui').checked == true) { // cas adhérent => utilisation du tableau o document.getElementById('montant').value = o[i]; } else { // cas non adhérent => utilisation du tableau n document.getElementById('montant').value = n[i]; } } </script>
Hélas, cette fonction ne marche plus à présent !

Pourriez-vous me trouver la correction SVP ?

Encore merci d'avance. :)

Posté : 01 juin 2009, 11:03
par Ryle
Tu as renommé les champs de ton formulaire... dès lors tu n'as plus d'élément nommé "atelier" et donc pas le droit de faire un "document.inscription.atelier[j].checked".

Sauf que comme tu ne peux pas coller de crochets dans le nom du champ en utilisant cette syntaxe, il faut utiliser le tableau "elements" de ton formulaire :
document.inscription.elements['atelier[]'][j].checked

Posté : 01 juin 2009, 12:34
par paul-75
En effet, nickel.
Merci Ryle :)