Récupérer le résultat de plusieurs checkbox.

Petit nouveau ! | 3 Messages

27 mars 2013, 13:06

Salut!
Je vous présente mon problème.
J'ai plusieurs input de type checkbox que je propose à l'utilisateur (User).
j'aimerai récupérer le résultat de ces checkbox et les insérer dans ma BDD. Mais je ne sais pas commant faire.

J'ai réussis à faire ce petit bout de code qui m'affiche le résultat du choix des Utilisateur dans mon "echo":

Code PHP:
if ($_POST['submit'])
{
foreach($_POST['let'] AS $choix_user){
echo $choix_user."</br>";}
}

Par contre, pour cette méthode j'ai donné le même NAME à mes inputs comme ce si:
<INPUT NAME="let[]" TYPE=checkbox VALUE="A"></INPUT>
<INPUT NAME="let[]" TYPE=checkbox VALUE="B"></INPUT>
<INPUT NAME="let[]" TYPE=checkbox VALUE="B"></INPUT>
etc...
<INPUT NAME="submit" TYPE=submit VALUE="Valider votre choix"></INPUT>

Mais je ne sais pas comment récupérer ces résultats, et les insérer dans ma BDD "CHOIX_USERS"!

A moins que je donne un "NAME" différent pour chaque INPUT! Mais après je ne sas pas comment faire.

Cela fais plusieurs semaine que je cherche une solution mais sans résultat. peuvez-vous m'aider?
Merci

Mammouth du PHP | 571 Messages

27 mars 2013, 15:10

bonjour,

les balises input sont auto-fermantes.toutes les balises html ainsi que les attributs sont toujours en minuscule.
Essaies ça:
<?php
if(isset($_POST['left'])){
	var_dump($_POST['left']);
}
?>



<form method="post">

	A:<input type="checkbox" value="A" name="left[]" />
        B:<input type="checkbox" value="B" name="left[]" />
        C:<input type="checkbox" value="C" name="left[]" />
        D:<input type="checkbox" value="D" name="left[]" />
      <input type="submit" value="Valider">
</form>

Petit nouveau ! | 3 Messages

27 mars 2013, 15:48

Merci pour le conseil!
Par contre , ton petit bout de code je l'es mis dans un echo pour voir le résultat!
je l'est mis comme ceci:
<?php
   if(isset($_POST['submit']))
 {
 if(isset($_POST['let'])){

        if ($_POST['submit']){
            foreach($_POST['let'] AS $choix_user){
               echo $choix_user."-"; 
	       echo var_dump($_POST['let']);
			   }
        }

      }
}
?>
Elle me donne des informations intéressantes du genre:
exemple si je coche les Checkboxs B et C:
B-

array
0 => string 'B' (length=1)
1 => string 'C' (length=1)

C-

array
0 => string 'B' (length=1)
1 => string 'C' (length=1)


Avec mon petit niveau en PHP/SQL je ne sais pas trop quoi en faire. Mon but c'est de récuperer les valeurs des checkbox cochées et faire un INSERT INTO dans ma BDD par la suite!
Comme ceci:
 $data_insert= "INSERT INTO user(id_users, choix1, choix2)VALUES ('','".$choix1."','".$choix2."',)";

Mammouth du PHP | 571 Messages

27 mars 2013, 16:50

var_dump est une fonction php qui te permet de lire le contenu d'une variable(type scalaire ou composite).je te renvoie au manuel php pour son usage.

pour afficher les cases cochées il suffit de boucler sur le tableau $_POST['let'] :
<?php
 if(isset($_POST['submit'])){
  {
  if(isset($_POST['let'])){      
            foreach($_POST['let'] as $choix_user){
               echo $choix_user."-";
               //var_dump($_POST['let']);
           }                         
     }
}

Mammouth du PHP | 571 Messages

27 mars 2013, 17:11

$data_insert= "INSERT INTO user(id_users, choix1, choix2)VALUES ('','".$choix1."','".$choix2."',)";
Maintenant pour ajouter les choix liés à un user il y a un problème de conception. choix étant un champ multiple(plusieurs choix possibles) il ne peut pas être un champ de la table user il faut nécessairement en créer une table choix pour éviter de dupliquer les données(ex: pour un user donné, on aura autant de données de ce dernier qu'il y aura de choix fournis ce qui est contraire à la logique des bases de données).

un exemple de modélisation de tes entités:

Code : Tout sélectionner

user(id,name,login,password); choix(id,name, user_fk); /où user_fk est la clé étrangère provenant de la table user
il te faut revoir la modélisation uml ou mérise

Petit nouveau ! | 3 Messages

27 mars 2013, 17:42

oula! un peut compliqué tous ça pour moi! Je crois qu'il va falloir que je me met à revoir ça étape par étape!
enfin bon. j'ai fais une petite modification dans code PHP et HTML ce qui donne ça (tu me diras si j'ai faux):

code PHP:
<?php
   if(isset($_POST['submit']))
     {
 $choix1=htmlspecialchars(trim($_POST['let1']));
 $choix2=htmlspecialchars(trim($_POST['let2']));
 $choix3=htmlspecialchars(trim($_POST['let3'])); 
        if ($_POST['submit']){	
	
	    //syntaxe pour la connection à la BDD;
	    $data_insert= "INSERT INTO user(id_users, choix1, choix2)VALUES ('','".$choix1."','".$choix2."',)";//insertion du choix de l'utilisateur à la BDD;
            echo $choix1."-";//affichage des choix de l'utilisateur;
		}
	

}

?>

code html (juste le petit bout nécessaire):
<form method="post" action="choix_user.php">
A:<input name="let1" type=checkbox value="a"/>
B:<input name="let2" type=checkbox value="b"/>
C:<input name="let3" type=checkbox value="c"/>

<input type=submit name="submit" value="Valider votre choix"></input>
</form>