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 :

choix multiple du checkbox


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 140
    Par défaut choix multiple du checkbox
    Salut à tous

    je suis debutant en php.

    j'ai un probleme au niveau de la recuperation des resultats des checkbox via un formulaire dans ma base de donnée.

    mon probleme consiste: seulement la valeur du dernier checkbox est recuperée.

    voila le code

    index.php

    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
    60
    61
    62
    63
    <?php
     
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
     
    mysql_select_db("produits", $con);
     
    $sql="SELECT * FROM prodchoisi  ";
     
    $resultatsRequete = mysql_query($sql,$con);
     
     
     
    /* affichage des noms des champs, selon le résultat renvoyé par MySQL + les vrai
    // noms des en-têtes */
        $nombreDeChamps = mysql_num_fields($resultatsRequete);
        for ($i = 1; $i < $nombreDeChamps; $i++) {
            $nom_colonne = mysql_field_name($resultatsRequete, $i);
            if (!empty($champsVeritables)) { // si on a fait une jointure
                $nom_colonne .= "<br />({$champsVeritables[$i][0]})";
                /* emphase de la table : décommentez la ligne suivante */
    			//$nom_colonne = preg_replace("[([\w]+)\.]", "<em title=\"nom de la table dont
    // le champ fait partie\">$1</em>.", $nom_colonne);
     
    /* autre mise en relief : que la partie différente du nom du champ (après le
    // préfixe comprenant un underscore) 
                /* marche pour dotclear et wordpress, entres autres systèmes */
                $nom_colonne = preg_replace("[(.+)_(.+)\.([\w]+)]", 
    "$1_<em>$2</em>.$3", $nom_colonne);
            }
    		?>
     
            <table align="center"   border="0">
    		<tr><td><input type="checkbox" name="choix[]" value="<?php echo $nom_colonne ?>" ></td><td><th scope=\"col\"><?php echo $nom_colonne ?></th></td></tr></table>
     
     
     
    		<?php
     
        } 
        echo "\t</tr>\n";
        // FIN affichage des intitulés de champs			
     
    			mysql_close($con);
    ?>
     
     
     
     
     
     
     
     
     
      <table align="center"   border="0">
      <tr>
        <td colspan="2" align="center"><input type="submit" value="Sauvegarder"></td>
      </tr>
     
    ?>



    insert.php


    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
    <?php
     
    $con1 = mysql_connect("localhost","root","",true);
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
     
    mysql_select_db("produits", $con1);
     
     
     
    for($i = 0, $c = count($_POST["choix"]); $i < $c; $i++) { 
     
    if(isset($_POST["choix"][$i]))
     global $prenom;
      $prenom=$_POST["choix"][$i];
     
    $sql1="INSERT INTO prodchoisi ($prenom) VALUES ('oui') ";
     
     
     
     echo $prenom;
    }
    if (!mysql_query($sql1,$con1))
      {
      die('Error: ' . mysql_error());
      }
    echo "le choix est ajouté à la table prodchoisi";
     
     
     
     
     
     
    mysql_close($con1)
     
    ?>
    j'explique encore: je veux cocher plusieurs checkbox à la fois,j'aime envoyer la chaine "oui" à la base en cas ou la case est coché,mais le probleme est qu'il ne prend en consideration que la derniere case .


    merci de m'aider

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Utilise cette forme pour que plusieurs champs de formulaires ayant le même nom soient envoyés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" name="ck[]" value="1" />
    <input type="checkbox" name="ck[]" value="2" />
    <input type="checkbox" name="ck[]" value="3" />
    Coté PHP, $_POST['ck'] sera un tableau.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    ...
    Coté PHP, $_POST['ck'] sera un tableau.
    J'ajoute simplement ceci pour parcourrir $_POST['ck']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($_POST['ck'] as $value){
    echo $value .'<br />';
    }

Discussions similaires

  1. [Débutant] Liste déroulante avec choix multiple (checkbox)
    Par Genyuumaru dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 20/11/2012, 09h42
  2. Réponses: 2
    Dernier message: 09/03/2012, 00h48
  3. Insérer checkbox dans une BDD avec choix multiple
    Par honey87 dans le forum Langage
    Réponses: 7
    Dernier message: 07/09/2011, 21h32
  4. formulaire choix multiple
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 02/02/2003, 18h59

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