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

PHP & Base de données Discussion :

Probleme de checkbox [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut Probleme de checkbox
    Bonjour, voila j'ai 1 seul checkbox dans un formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="checkbox_privee[]" type="checkbox" id="checkbox_privee[]" value="privee"/>
    Seulement j'aimerai qu'au moment de la validation du formulaire, si cette case est coché, renvoyé la valeur "oui" dans ma BDD, et "non" si elle n'est pas cocher.

    Seulement après des recherches, je trouve tout le tps des explications par rapport à des choix multiples, d'ailleur j'utilise et je ne sais pas si [] est primordial pour 1 choix unique.

    Infos:
    <form action="traitementfiche.php"
    nom du formulaire: form3
    Table "fiches" champ: "privee" (varchar3)

    voici le code de "traitementfiche.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    include ('secure.php');
    include ("mysqlconnect.php");
    $tabprivee = (isset($_POST['checkbox_privee']))?$_POST['checkbox_privee']:null;
    echo "Voici les cases que vous avez choisi :<br>";
    if (!empty($tabprivee)) {
    foreach($tabprivee as $cle => $valeur) {
    echo $cle.' : '.$valeur.'<br>';
     
    mysql_query("INSERT INTO fiches (privee) VALUES (".$valeur.")");
    ......
    }
    }
    Mais rien à l'air d'être insérer

    Thx

  2. #2
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    si ta checkbox n'est pas cochée alors elle ne renverra rien
    si elle est ok, elle renvera sa valeur

    donc en faisant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(isset($_POST['checkbox_privee']))
    {
         echo $_POST['checkbox_privee'];
         $valeur="OUI";
    }
    else 
    {
         $valeur="NON";
    }
    mysql_query("INSERT INTO fiches (privee) VALUES (".$valeur.")");

  3. #3
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    utilises plutot un radio

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    non car le radio on peu pa le décocher quand il a qu'une case, car pas la posibilité de sélectionner une autre. Ici je pense le checkbox c'est le mieux, enfin je pense, donc vais essayer le code a dj-julio,

    Merci beaucoup

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Par défaut
    Une checkbox n'est envoyée que si elle est cochée, sinon la variable correspondante n'existera pas.

    Pour le formulaire les crochets ne servent à rien (c'est bien juste pour les radios buttons). Même en XHTML strict il faut utiliser name et non pas id pour les checkbox il me semble. On peu cumuler les 2, c'est rétrocompatible... d'ailleurs vous l'avez fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form name="form3" method="post" action="traitementfiche.php">
    <input type="checkbox" id="checkbox_privee" name="checkbox_privee" value="privee" />
    <input type="submit" name="ok" value="OK" />
    </form>
    et ensuite:

    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
     
    <?php
    include ('secure.php');
    include ("mysqlconnect.php");
     
    // il faut mettre un crochet à tabprivee sinon ce n'est plus un Array !
    $tabprivee[] = (isset($_POST['checkbox_privee']))?$_POST['checkbox_privee']:null;
     
    // orthographe :)
    echo "Voici les cases que vous avez choisies :<br/>";
     
    // moi je préfère isset...
    if ( isset($tabprivee) ){
       foreach( $tabprivee as $cle => $valeur ) {
          echo $cle.' : '.$valeur.'<br/>';
     
          mysql_query("INSERT INTO fiches (privee) VALUES (".$valeur.")");
          ......
       }
    }
    Sivous voulez le id du textfield pour clé de tabprivee utilisez ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( isset($_POST['checkbox_privee']) ) $tabprivee['checkbox_privee'] =$_POST['checkbox_privee'];

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    Ca marche

    Un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //checkbox privee
    if(isset($_POST['checkbox_privee'])) 
    { $privee="oui"; } 
    else 
    { $privee="non"; } 
     
    $sql = "INSERT INTO fiches (nomFiche, loginL, descriptifFiche, resolutionFiche, nbhresolution, privee, emailF) VALUES ( '".$nomfiche."' , //'".$_SESSION['loginL']."', '".$textarea."', '".$textarea2."', '".$nbh."', '".$privee."', '".$_SESSION['emailL']."' )"; 
    $result = mysql_query($sql) or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error());
    Franchement super ce forum, rapidité, disponibilité des personnes, merci beaucoup et bonne continuation à tous

  7. #7
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    de rien !
    pense au petit clique sur :

    @bientôt

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    Par contre je comprend pas donc la valeur "oui" ou "non" est bien insérer, mais j'ai toujours une erreur que j'avai, je ne comprend pas:

    Erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d'Insertion dans la base : INSERT INTO fiches (nomFiche, loginL, descriptifFiche, resolutionFiche, nbhresolution, privee, emailF) VALUES ( 'nom fiche4' , 'monlogin', '4a', '4b', '12', 'oui', 'monadress@ent.com' )
    Duplicate entry '' for key 1
    Et mon code le voici :

    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
    <?php 
    include ('secure.php');
    include ("mysqlconnect.php");
    $nomfiche = $_POST['nomfiche'];
    $textarea = $_POST['textarea'];
    $textarea2 = $_POST['textarea2'];
    $nbh = $_POST['nbh'];
    //checkbox privee
    if(isset($_POST['checkbox_privee'])) 
    { $privee="oui"; } 
    else 
    { $privee="non"; } 
     
    $sql = "INSERT INTO fiches (nomFiche, loginL, descriptifFiche, resolutionFiche, nbhresolution, privee, emailF) VALUES ( '".$nomfiche."' , '".$_SESSION['loginL']."', '".$textarea."', '".$textarea2."', '".$nbh."', '".$privee."', '".$_SESSION['emailL']."' )"; 
    $result = mysql_query($sql) or die ("Erreur d'Insertion dans la base : ". $sql .'<br />'. mysql_error()); 
    .....
    ?>
    Je vois que toute les valeurs sessions, variables post sont transmises selon la requete, mais rien dans ma base avec cette erreur...

  9. #9
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    tu as surement mis ta colonne : nomFiche de ta base en clé primaire
    il ne faut donc pas qu'il ai 2 fois le même nom de fiche.
    pour éviter ce problème, tu peux passer ce nomFiche en integer et le mettre en autoincrement
    sinon tu te débrouille pour qu'il n'y ai pas 2 fois la même valeur

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    en faite non, c'est un numéro de fiche que je traiterai plus tard la clé primaire, le nomFiche est défini de cette manière :

    nomFiche varchar(30)

  11. #11
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    tu as certainement deux fois le même nom dans ta base
    ---->Duplicate entry '' for key 1
    ça veut dire qu'il a trouvé une entré dupliquée ^^ tout simplement

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    c'est tout bête en faite, en choisissant de traiter la clé primaire par la suite, il crée un nouvel enregistrement donc avec un champ vide "numfiche" tel quel " ". De ce faite pu unique enfin je pense c est ca peu pa le tester pour l instant.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    j ai rien dit, j ai pu tester c bon

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de checkbox avec IE
    Par gandoulfe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/04/2006, 14h03
  2. [Struts] probleme html:checkbox ou multibox
    Par bruno270579 dans le forum Struts 1
    Réponses: 20
    Dernier message: 03/03/2006, 15h35
  3. [MySQL] Problème avec checkbox
    Par iomega dans le forum Requêtes
    Réponses: 11
    Dernier message: 24/01/2006, 15h37
  4. [VB.NET] Probleme avec CheckBox
    Par Aspic dans le forum VB.NET
    Réponses: 11
    Dernier message: 19/12/2005, 11h54
  5. [Struts]Problème de checkbox
    Par soony dans le forum Struts 1
    Réponses: 5
    Dernier message: 22/08/2005, 17h17

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