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 12/09/2011, 10h11   #1
Invité de passage
 
Femme
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Valeurs des checkbox se croisent

Bonjour,

je suis entrain de (enfin j'essaye de) coder un formulaire assez exhaustif. Je me heurte à un soucis de taille avec la récupération de mes valeurs de checkbox. Quand je n'ai qu'un groupe checkbox à récupérer pas de soucis, tout ce corse quand j'intègre un 2e groupe. Les valeurs semblent se croiser. C'est comme si elles étaient liées l'une à l'autre.

Ex quand je sélectionne :


Après validation :


Le code utilisé.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
 
$list['f_1'] = array("mouton", "chat", "canard");
$list['f_3'] = array("chien", "vache", "poule");
 
$cb=array();
$cb1=array();
 
if (isset($_POST['submit'])) {
    $erreur = "";
    while (list($var, $val) = each($_POST)) {
        if (!is_array($val)) {
            $$var = strip_tags($val);
 
        } else {
 
    while (list($arvar, $arval) = each($val)) {
                $cb[$arvar] = strip_tags($arval);
                $cb1[$arvar] = strip_tags($arval);
 
            } 
        }
    }
 
?>
 
<head></head>
 
<body>
   <form action='<? echo $_SERVER['PHP_SELF'] ?>' method='post' name='Form'>
 
            Test : 
                      <?php for($id=0;$id<count($list['f_1']);$id++)
                        {
                            if($cb[$id]==1){
                                $ct="checked";
                            }
                        print("<input ".$ct." type='checkbox' name='cb[$id]' value='1' border='0'><label class='case'>".$list[f_1][$id]."</label>");
                        unset($ct);
                        }?>
 
 
            Test2 :
 
                        <?php for($id=0;$id<count($list['f_3']);$id++)
                        {
                            if($cb1[$id]==1){
                                $ct="checked";
                            }
                        print("<input ".$ct." type='checkbox' name='cb1[$id]' value='1' border='0'><label class='case'>".$list[f_3][$id]."</label>");
                        unset($ct);
                        }?>
 
            <input type='submit' name='submit' value='Envoyer' border='0'>
 
    </form>
<?php } ?>
 
</body>
Merci pour votre aide
Images attachées
Type de fichier : png Image 19.png (12,5 Ko, 20 affichages)
Type de fichier : png Image 20.png (12,4 Ko, 20 affichages)
letty45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h51   #2
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Code :
print("<input ".$ct." type='checkbox' name='cb[$id]' value='1' border='0'><label class='case'>".$list[f_1][$id]."</label>");
devient

Code :
print("<input ".$ct." type='checkbox' name='cb[]' value='".$id."' border='0'><label class='case'>".$list[f_1][$id]."</label>");
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 13h11   #3
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
Dans ce code
Code :
1
2
3
4
5
6
while (list($arvar, $arval) = each($val)) {
                $cb[$arvar] = strip_tags($arval);
                $cb1[$arvar] = strip_tags($arval);
 
            } 
        }
Tous les valeur du cb1 vont ecrasé les valeur du cb parce qu'ils ont les même ID
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 13h13   #4
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
Tu peu faire
Code :
1
2
3
4
5
6
7
8
while (list($arvar, $arval) = each($val)) 
{
      if ($var == "cb")
            $cb[$arvar] = strip_tags($arval);
      else
            $cb1[$arvar] = strip_tags($arval);
 
}
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h27   #5
Invité de passage
 
Femme
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 0
Points : 0
Merci beaucoup m4riachi cela marche très bien Penses-tu que cela puisse marcher avec 5-6 groupes de checkbox ayant pour nom : cb, cb1, cb2, cb3, cb4, cb5 ? Car mon formulaire plus complexe a plus de deux groupes de checkbox...

Pour Shikiryu, j'y ai bien pensé mais pour conserver la case cochée après validation (car il y a vérification) il était plus simple d'avoir une valeur de 1.

J'ai trouvé solution à ma question

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (list($arvar, $arval) = each($val)) {
 
            switch ($var){
                case cb:
                $cb[$arvar] = strip_tags($arval);
                break;
                case cb1:
                $cb1[$arvar] = strip_tags($arval);
                break;
            case cb2:
                $cb2[$arvar] = strip_tags($arval);
                break;
            }
 
}
letty45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 16h47   #6
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
Essai avec
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
if (isset($_POST['submit'])) 
{
	$erreur = "";
	while (list($var, $val) = each($_POST)) 
	{
		if (!is_array($val)) 
		{
			$$var = strip_tags($val); 
		} 
		else 
		{ 
			while (list($arvar, $arval) = each($val)) 
			{
                                $$var[$arvar] = strip_tags($arval); 
			} 
		}
	}
}
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h50.


 
 
 
 
Partenaires

Hébergement Web