IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Valeurs des checkbox se croisent


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Images attachées   

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("<input ".$ct." type='checkbox' name='cb[$id]' value='1' border='0'><label class='case'>".$list[f_1][$id]."</label>");
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("<input ".$ct." type='checkbox' name='cb[]' value='".$id."' border='0'><label class='case'>".$list[f_1][$id]."</label>");

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Dans ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Tu peu faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
     
    }

  5. #5
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
                }
     
    }

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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); 
    			} 
    		}
    	}
    }

Discussions similaires

  1. Recupération des valeurs des checkbox
    Par goosweb dans le forum Général VBA
    Réponses: 1
    Dernier message: 10/07/2007, 20h40
  2. Réponses: 1
    Dernier message: 18/04/2007, 06h05
  3. [JSP] valeurs des checkbox
    Par lcoder dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 10/05/2006, 12h45
  4. [PHP-JS] Récupérer les valeurs des checkbox
    Par jamirokoi dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2006, 16h24
  5. recuperer les valeurs des checkbox selectionnés
    Par kagura dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/03/2006, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo