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 :

[Tableaux] Recuperer les valeurs de plusieurs checkbox


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de tomenbois
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 76
    Points : 61
    Points
    61
    Par défaut [Tableaux] Recuperer les valeurs de plusieurs checkbox
    Bonjour,

    J'ai un formulaire Html avec une ou plusieurs checkbox à cocher au choix.
    Je voudrai récupérer les valeurs des checkbox et les placer dans une base de donnée.

    voici mon code :
    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
    64
    65
    66
    67
    68
    69
    70
    <?php
    include "config.php";
    $id  = $_GET["id"] ;
    $sql="SELECT *
    		FROM T_type_option";
    $requete = mysql_query($sql);
    $sql2="SELECT nom_type_fourniture, id_type_fourniture
    	FROM T_type_fourniture";
    $requete2 = mysql_query($sql2);
    	if (isset($_POST['bouton']) && $_POST['bouton'] == "Ajouter")
    {
    $ref = $_POST['ref'];
    $nom = $_POST['nom'];
    $type =$_POST['type'];
    $produit = $_POST ['id_type_fourniture'];
    $nb_produit=$_POST['nb_produit'];
    $query = "INSERT INTO T_option VALUES ('','$nom','$ref','$type')";
    mysql_query($query)or die(mysql_error());
    $id_option = mysql_insert_id();
    $query2 = "INSERT INTO L_contrat_option VALUES ('$id','$id_option')";
    mysql_query($query2)or die(mysql_error());
    for ($i=0;$i<$nb_produit;$i++);
    {
    	if (isset($_POST["produit$i"]))
    	{
    		$prod=$_POST["produit$i"];
    		$query3 = "INSERT INTO L_option_type_fourniture VALUES ('$id_option','$prod')";
    		mysql_query($query3) or die(mysql_error("NE MARCHE PAS"));
    		echo $query3;
    	}
    	echo $i."<br>";
    }
    header("location: voircontrat.php?id=$id");
    exit;
    }
    ?>
    <HTML>
    <HEAD>
    <BODY>
    		<center>Gestion des Clients v.1</center><br><br>
    <TABLE border="1" cellspacing="5" width="40%" align="center" valign="middle" >
    <FORM METHOD="POST" ACTION=""> 
    	<tr>
    	<td>
    		Ref de l'option : <input type="text" NAME="ref">
    	</td>
    	</tr>
    	<tr>
    	<td>
    		Nom de l'option : <input type="text" NAME="nom">
    	</td>
    	</tr>
    	<tr>
    	<td>
    		Type d'option : <select size="1" name="type"><? while($row = mysql_fetch_assoc($requete)){
    			echo "<option value=\"".$row['id_type_option']."\">".$row['type_option']."</option>";
    			} ?></select>
    	</td>
    	</tr>
    	<tr>
    	<td>
    		Liste des produits : <br><? $nb_produit=0; while($row2 = mysql_fetch_assoc($requete2)){?>
    		<input type="checkbox" name="produit<?echo $nb_produit;?>" value="<? echo $row2['id_type_fourniture'];?>"><?echo $row2 ['nom_type_fourniture']; $nb_produit++; }
    		echo "<input type='hidden' name'=nb_produit' value='$nb_produit'>";?>
    	</td>
    	</tr>
    	<INPUT 	TYPE="submit" NAME="bouton" VALUE="Ajouter">
    </FORM>
    </TABLE>
    </HTML>
    Il doit y avoir un problème quelque part car je n'enregistre que la premiére checkbox cochée, les autres ne sont pas prises en compte.

    Quel est la solution ?

  2. #2
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Quand une checkbox n'est pas cochée elle n'est pas envoyée. Donc tu peux te servir de la fonction isset() pour savoir si elle a été envoyé.

    Exemple : isset($_POST['nomDeLaCheckBox'])

  3. #3
    Membre du Club Avatar de tomenbois
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 76
    Points : 61
    Points
    61
    Par défaut
    Sa c'est fait !!! regarde bien le code

  4. #4
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    salut,
    erreur de frappe ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <? echo "<input type='hidden' name'=nb_produit' value='$nb_produit'>";?>
    les attributs de balises HTML s'écrivent avec des guillemets et non de simple cote.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <? echo '<input type="hidden" name="nb_produit" value="'.$nb_produit.'">';?>

    Cela pose problème pour ta boucle for vu que
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     $nb_produit=$_POST['nb_produit'];
    ne sera pas définit.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="produit<?echo $nb_produit;?>"
    remplace par

    tu auras toute les checkbox oché dans un tableau beaucoup plus simple un ti foreach pour le traité et c bon

  6. #6
    Membre du Club Avatar de tomenbois
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 76
    Points : 61
    Points
    61
    Par défaut
    Je vais simplifier, voici le code qui doit récupérer les valeurs des checkbox cochées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for ($i=0;$i<$nb_produit;$i++);
    {
    	if (isset($_POST["produit$i"]))
    	{
    		$prod=$_POST["produit$i"];
    		$query3 = "INSERT INTO L_option_type_fourniture VALUES ('$id_option','$prod')";
    		mysql_query($query3) or die(mysql_error("NE MARCHE PAS"));
    		echo $query3;
    	}
    	echo $i."<br>";
    }
    et voici la partie checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Liste des produits : <br><? $nb_produit=0; while($row2 = mysql_fetch_assoc($requete2)){?>
    		<input type="checkbox" name="produit<?echo $nb_produit;?>" value="<? echo $row2['id_type_fourniture'];?>"><?echo $row2 ['nom_type_fourniture']; $nb_produit++; }
    		echo "<input type='hidden' name'=nb_produit' value='$nb_produit'>";?>

  7. #7
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    En effet. Moi je dirais que ta boucle n'est pas bonne

    En fait si j'ai bien déchiffré ton code, il ne récupére pas une checkbox mais le champs hidden.

    C'est produit$i qui ne fonctionne pas il me semble.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    voila comment je procéderai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (isset($_POST['produit']))
    	{
    	 foreach($_POST['produit'] as $prod){
     
    		$query3 = "INSERT INTO L_option_type_fourniture VALUES ('$id_option','$prod')";
    		mysql_query($query3) or die(mysql_error("NE MARCHE PAS"));
    		echo $query3;
     
    	}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Liste des produits : <br><?php  while($row2 = mysql_fetch_assoc($requete2)){
     
    		echo '<input type="checkbox" name="produit[]" value="'.$row2['id_type_fourniture'].'">'.$row2 ['nom_type_fourniture']; 
    		}

  9. #9
    Membre du Club Avatar de tomenbois
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 76
    Points : 61
    Points
    61
    Par défaut
    Bon sa marche, Gats avait raison, c'était juste a cause d'une erreur de frappe

    Désolé d'avoir posté un problème aussi minable

    Merci quand même à vous tous.

    PS: je vais quand même tester ton code Boo64

  10. #10
    Membre du Club Avatar de tomenbois
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 76
    Points : 61
    Points
    61
    Par défaut
    ça marche très bien aussi, un peu plus léger que le code d'origine.

    Merci à toi Boo64

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

Discussions similaires

  1. récupérer et traiter les valeur de plusieur checkbox
    Par artichaudd dans le forum Langage
    Réponses: 11
    Dernier message: 26/12/2011, 18h23
  2. Réponses: 5
    Dernier message: 18/02/2008, 16h11
  3. Réponses: 2
    Dernier message: 24/08/2007, 14h25
  4. Réponses: 9
    Dernier message: 20/08/2007, 14h07

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