Pb insertion par des checkbox

louetzhang -  
crabs Messages postés 909 Statut Membre -
Pour ma question précédente c'est trouvé, mais maintenant j'ai un souci :
Lorsque je veux insérer des données via un formulaire utilisant des checkbox, dans mysql, les données saisies dans le champ correspondant aux checkbox est ARRAY pour toutes les valeurs.
Comment afficher la valeur réelle choisies ? D'ailleurs comment gérer la multiselection ? est ce que ds mysql toutes les valeurs seront affichées a la suite ?

merci de votre réponse, je galere

3 réponses

  1. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Le problème de HTTP c'est qu'il ne transmet que les checkbox effectivement
    coché.
    Pour retrouver ce qui a été coché, il faut initialement que toutes les checkbox
    aient un attribut 'value' différent. Ensuite, si tu mets une expression du type
    val[numero] dans ce champs, les cases cochés seront rangés dans un tableau
    associatif de nom $val. La clé de ce tableau sera le numéro (qui peut être
    alphanumérique) et la valeur sera 'on'.
    Essaies ce formulaire :
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
        <title>POST DE CHECK BOX</title>
    </style>
    </head>
    <body>
        <h1>POST DE CHECK BOX</h1>
        <form method="POST" action="traite.php">
            <p><input type="checkbox" name="a[v1]"> val1</p>
            <p><input type="checkbox" name="a[v2]"> val2</p>
            <p><input type="checkbox" name="a[v3]"> val3</p>
            <p><input type="submit" name="ok" value="ok"></p>
        </form>
    </body>
    </html>
    

    Et le script traite.php
    <?
    header( "Content-type: text/plain" ) ;
    echo "POST=" ; print_r( $_POST ) ;
    $checkbox = $_POST['a'] ;
    echo "checkbox=" ; print_r( $checkbox ) ;
    ?>
    

    Donc pour traiter correctement les checkbox, le script qui reçoit les données
    du formulaire doit connaitre le nom de tous les checkboxs afin de savoir si
    elles sont cochés ou pas.

    A+, crabs
    0
  2. louetzhang Messages postés 3 Statut Membre
     
    Merci beaucoup.
    Le probleme a présent est que la valeur enregistrée dans ma table mysql est ARRAY au lieu de la valeur correspondant à celle cochée dans mes checkbox.
    savez vous pourquoi ?
    0
  3. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Je pense que l'insert ou l'update est fait avec le nom du tableau et non le nom
    d'une case du tableau.
    Sur le formulaire que j'ai écrit plus haut, si à chaque valeur on associe un
    champs YESNO, il faut faire un truc du genre :
    $checkboxes = array( 'v1', 'v2', 'v3' ) ; // toutes les checkbox du formulaire
    foreach( $checkboxes as $val )
      if ( array_key_exists( $val, $_POST ) )
        $$val = 'Y' ;
      else
        $$val = 'N' ;
    // La requete
    $sql = "INSERT INTO tbl VALUES( ..., '$v1', '$v2', '$v3', ... )" ;
    

    A+, crabs
    0