Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/08/2011, 16h10   #1
Invité de passage
 
Homme
Inscription : avril 2006
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2006
Messages : 12
Points : 4
Points : 4
Par défaut Checkbox et variables

Bonjour,

Je suis face à un problème, et j'avoue ne pas trouver de solution. Je souhaite enregistrer un formulaire dans une base de donnée mais je bloque lorsque je veux prendre en compte les "checkbox".
Au niveau de la table j'ai 4 champs dont les valeurs seront 1 ou 0 suivant que la case est cochée ou non.
voici le code du formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
			<fieldset>
				<legend>Cocher le(s) type(s) de demande : </legend>
				<div>
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck" value="opt1" /> option1<br />
 
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck"  value="opt2" /> option2<br />
 
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck"  value="opt3" /> option3<br />
 
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck"  value="opt4" /> option4<br />
				</div>
			</fieldset>
En gros comment puis-je récupérer 4 variables correspondant au 4 cases à cocher?
Merci de votre aide
saxonac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 16h14   #2
Membre éprouvé
 
Avatar de guigo
 
Inscription : juin 2006
Messages : 606
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 606
Points : 479
Points : 479
Salut,
si tu veux passer par des checkbox du doit leur donner un nom différent chacun. Sinon tu peux passer par un bouton radio si tu n'as qu'un choix possible

Guigo
guigo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 16h29   #3
Invité de passage
 
Homme
Inscription : avril 2006
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2006
Messages : 12
Points : 4
Points : 4
Salut Guigo, merci pour ta réponse rapide.

J'utilise un script de vérification de formulaire qui nécessite que tout les checkbox aient le même nom.
Et malheureusement il y a plusieurs choix possible.

J'ai trouver des choses de ce type là :

Code :
1
2
3
4
5
6
 
if(isset($_POST['checkboxdemande']))
	{
	foreach($_POST['checkboxdemande'] AS $cle=>$value)
					echo $cle,' -> ',$value, '<br />', "\n";*/
	}
Mais cela me donne seulement les cases cochées, or je voudrais avoir au finale 4 variables correspondant aux 4 cases ayant pour valeur 1 si la case est cochée et 0 si elle ne l'est pas.
saxonac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 16h49   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,$voici une manière de faire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
if(isset($_POST['checkboxdemande']))
{
	for($i=1; $i<5; $i++){
		// les variables crées auront pour nom : $opt1, $opt2, ...
		// les valeurs : 1 si cochée, 0 sinon
		$opt{$i} = ($_POST['checkboxdemande'][$i]==1)? 1 : 0; 
		echo '$opt'.$i.' -> ',$opt{$i}, '<br />', "\n";
	}
}
?>
<div>
	<form method="post" action="">
			<fieldset>
				<legend>Cocher le(s) type(s) de demande : </legend>
				<div>
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[1]" id="maxcheck" value="1" /> option1<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[2]" id="maxcheck"  value="1" /> option2<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[3]" id="maxcheck"  value="1" /> option3<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[4]" id="maxcheck"  value="1" /> option4<br />
<input type="submit" value="envoi"/>
				</div>
			</fieldset>
	</form>
</div>
On récupère 4 variables :
Citation:
$opt1 -> 0
$opt2 -> 1
$opt3 -> 0
$opt4 -> 1
A noter:
Citation:
... name="checkboxdemande[1]" id="maxcheck" value="1" /> option1 ...
... name="checkboxdemande[2]" id="maxcheck" value="1" /> option2 ...
... name="checkboxdemande[3]" id="maxcheck" value="1" /> option3 ...
... name="checkboxdemande[4]" id="maxcheck" value="1" /> option4 ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 17h11   #5
Invité de passage
 
Homme
Inscription : avril 2006
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2006
Messages : 12
Points : 4
Points : 4
Merci pour ce code et effectivement cela semble marcher mais lorsque je précise l'indice (par exemple : checkboxdemande[] en checkboxdemande[1]) le script de validation du formulaire ne fonctionne plus, il considère que les checkbox ont tous des noms différents.

En réalité ce script de validation (javascript) me permet d'afficher un message si l'utilisateur ne coche pas de case en disant qu'il faut cocher au moins une case. Si je modifie l'indice le message s'affiche pour chaque case, du coup cela n'a plus de sens.

Si il n'y pas d'autre moyen, je supprimerai ce script.
saxonac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 17h13   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bouge pas !
j'en ai un autre, qui va fonctionner avec ta validation javascript :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
if(isset($_POST['checkboxdemande'])) // array des values des checkbox cochées
{
	for($i=1; $i<5; $i++){ // pour $i = 1, 2, 3 ou 4
		// si $i est dans l'array des checkboxdemande, c'est que la checkbox est cochée
		// on crée la variable $opt{$i} ($opt1, $opt2, $opt3, $opt4)
		$opt{$i} = (in_array($i, $_POST['checkboxdemande']))? 1 : 0;
		echo '=> $opt'.$i.' -> ',$opt{$i}, '<br />', "\n";
	}
}
?>
<div>
	<form method="post" action="">
			<fieldset>
				<legend>Cocher le(s) type(s) de demande : </legend>
				<div>
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck" value="1" /> option1<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck"  value="2" /> option2<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck"  value="3" /> option3<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck"  value="4" /> option4<br />
<input type="submit" value="envoi"/>
				</div>
			</fieldset>
	</form>
</div>
A noter :
Citation:
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck" value="1" /> option1<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck" value="2" /> option2<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck" value="3" /> option3<br />
<input class="validate[required] checkbox" type="checkbox" name="checkboxdemande[]" id="maxcheck" value="4" /> option4<br />
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 17h46   #7
Invité de passage
 
Homme
Inscription : avril 2006
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2006
Messages : 12
Points : 4
Points : 4
Ça marche super!!
Bon maintenant je vais essayer de comprendre.

Merci beaucoup.
saxonac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 10h54   #8
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par saxonac Voir le message
Bon maintenant je vais essayer de comprendre.
-> Variable variables (explication de $opt${$i})
-> in_array()

Pour le reste, j'ai ajouté des commentaires dans le code ci-dessus.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 11h00   #9
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
[Edit] Oups ! mauvaise manip ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h38.


 
 
 
 
Partenaires

Hébergement Web