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 :

Tester si checkbox existe != Tester si checkbox cochée


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Tester si checkbox existe != Tester si checkbox cochée
    Bonjour a tous,

    J'ai 2 formulaire qui contiennent chacun leurs checkboxs.

    J'ai une fonction unique qui recupere les valeurs POST de chaque formulaire.

    Afin de creer la requete qui me permettrais de sauvegarder les valeurs je devrais tester :


    SI (maCheckBox existe) {
    Si ( macheckBox est cochee )
    $sql .= "maChecbox = true"
    else
    $sql .= "maChecbox = else"
    }
    else // cad si ma checkBox n'existe pas ne rien faire { }


    Le probleme est qu'en php la fonction isset($POST_['maCheckBox']) teste :
    (CheckBox cochee && checkBox existe).

    N'hesiter pas a repondre merci

    PS : desole pour les accents clavier qwerty oblige :/

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Ce n'est pas lié à PHP mais au HTML.
    => Si la checkbox n'est pas cochée alors sa valeur n'est pas transmise ce qui en soit est tout à fait suffisant pour décrire deux états.

    Quelle est la problématique exactement ? Peut-être que des boutons radio ou un <select> seraient plus apropriés.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Ce n'est pas lié à PHP mais au HTML.
    => Si la checkbox n'est pas cochée alors sa valeur n'est pas transmise ce qui en soit est tout à fait suffisant pour décrire deux états.

    Quelle est la problématique exactement ? Peut-être que des boutons radio ou un <select> seraient plus apropriés.
    La fonction qui recupere la valeur les valeurs POST du formulaire a besoins de savoir si la checkbox existe dans page si elle existe alors elle recupere la valeur cochee, non cochee pour creer la requete. Si la checbox n'existe pas alors elle ne creer pas de requete.

    La fonction isset retourne (CheckBox cochee && checkBox existe).

    Il me faudrai une astuce (fonction?) php qui retournerai (checkBox existe) et une autre (CheckBox cochee).

    Voici la fonction en question si cela peut t'aider :

    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
     
    function sql_insert_preference_checkboxes($checkboxlistfield) {
    /* $checkboxlistfield est un tableau qui contient le nom de tous les nom des tableaux de mes differentes liste de checkboxs*/
           $sql="";
    	foreach ($checkboxlistfield as $value) {
            $result=0;
    		if(isset($_POST[$value])) {  // c'est ici que se pose mon probleme
    			$val = $_POST[$value];
     
    			for ($i=0; $i<count($val); $i++) {
                                $result |= $val[$i];
    			}
     
    		}
                    $sql.=$value."=".$result.", ";
    	}
        return $sql;
    }

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    La fonction qui recupere la valeur les valeurs POST du formulaire a besoins de savoir si la checkbox existe dans page
    Si isset($_POST['nomCheckbox']) == TRUE alors la checkbox existe ET est cochée.
    Si isset($_POST['nomCheckbox']) == FALSE alors la checkbox n'a pas été cochée OU BIEN elle n'était pas présente dans le formulaire.
    Si cela ne te convient pas alors il faudra passer par des boutons radio oui/non qui contrairement à une checkbox peuvent avoir une valeur par défaut ou utiliser des champs-drapeaux HIDDEN indiquant la présence des checkboxes.

    si elle existe alors elle recupere la valeur cochee
    OK, classique.

    non cochee pour creer la requete
    ??

    Si la checbox n'existe pas alors elle ne creer pas de requete.
    Hum, si rien ne se passe qd la checkbox n'est pas cochée j'ai vraiment du mal à voir où se situe ton pb.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    reBonjour,

    Si isset($_POST['nomCheckbox']) == TRUE alors la checkbox existe ET est cochée.
    Si isset($_POST['nomCheckbox']) == FALSE alors la checkbox n'a pas été cochée OU BIEN elle n'était pas présente dans le formulaire.
    Si cela ne te convient pas alors il faudra passer par des boutons radio oui/non qui contrairement à une checkbox peuvent avoir une valeur par défaut ou utiliser des champs-drapeaux HIDDEN indiquant la présence des checkboxes.
    En fait c'est tout a fait sa, j'ai resolu le probleme en ajoutant tous les checkboxes du formulaire 1 dans le formulaire 2 en hidden et vice versa. C'est crade mais sa marche je verrais plus tard pour une solution propre :/

    Merci pour ton aide

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une solution possible : tu accompagnes chaque checkbox d'un champ hidden l'identifiant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="checkbox" name="checkbox1" />
    <input type="hidden" name="is_checkbox1"  />
    Si la case est cochée : isset(checkbox1) = TRUE
    Si la case n'est pas cochée : isset(checkbox1) = FALSE && isset(is_checkbox1) = TRUE
    Si la case n'est pas présente : isset(is_checkbox1) = FALSE

    (edit : solution proposée par Séb, je viens de voir)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/06/2008, 11h33
  2. Tester la non existence d'un fichier
    Par Pharmacos dans le forum Débuter
    Réponses: 3
    Dernier message: 20/05/2008, 20h25
  3. Décocher une checkbox si une autre est coché
    Par Sieldev dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/07/2007, 13h11
  4. liste de checkbox et extraire les cases cochées.
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 1
    Dernier message: 01/08/2006, 15h49
  5. Tester si fenêtre existe après submit
    Par ronald dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/01/2005, 16h36

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