Page 1 sur 1

Bouton radio et base de donnée

Posté : 24 juin 2011, 15:42
par johanetpirlouit
Bonjour à tous,

Tout d'abord je suis débutant en MYSQL et base de donnée.
Voici mon problème : J'ai créé un formulaire avec zone de texte ainsi que bouton radio avec deux choix possibles (pour le sexe) et je souhaites rentrer les infos dans uns base de donnée.
Or quand je rentre mes données cela me créé deux entrées

Ce que montre ma base de donnée (Le / signifie qu'il n'y a pas de donnée enregistrée dans la base)
" ID = 1 - Nom = / - Prénom = / - Sexe = H (si j'ai choisis homme)
ID = 2 - Nom = Dupont - Prénom = Michel - Sexe = / "
Deux entrée sont crée pour la même personne au lieu d'une qui regrouperait l'ensemble des infos.
Donc j'aimerais savoir comment je peux fusionner les infos dans la même "id"

Mon code
switch($sexe)
{
case "H":
$query = "INSERT INTO $table(sexe)";
$query .= " VALUES('H')"; 
$result = mysql_query();
break;
case "F":
$query = "INSERT INTO $table(sexe)";
$query .= " VALUES('F')"; 
$result = mysql_query();
break;
}
$query = "INSERT INTO $table(nom,prenom)";
$query .= " VALUES('$nom','$prenom','$adresse')"; 
$result = mysql_query($query);
Je pense que le problème est au niveau du query du switch, mais étant débutant je ne sais que mettre.
Merci d'avance pour votre aide.

Re: Bouton radio et base de donnée

Posté : 24 juin 2011, 15:58
par Mazarini
Normal, tu fais 2 insert dans la table.

1er avec juste le code sexe : "INSERT INTO $table(sexe)..."
2eme juste avec nom/prenom : "INSERT INTO $table(nom,prenom)..."

Au passage, ca ne devait pas être : INSERT INTO $table(nom,prenom,adresse) ? et tu oublies le $query dans 2 appels mysql_query()

Re: Bouton radio et base de donnée

Posté : 24 juin 2011, 16:04
par johanetpirlouit
Oups vraiment désolé j'ai copier-coller un code d'essai voici le bon code

switch($sexe)
{
case "M":
$query = "INSERT INTO $table(sexe)";
$query .= " VALUES('M')"; 
$result = mysql_query($query);
break;
case "F":
$query = "INSERT INTO $table(sexe)";
$query .= " VALUES('F')"; 
$result = mysql_query($query);
break;
}
$query = "INSERT INTO $table(nom,prenom)";
$query .= " VALUES('$nom','$prenom')"; 
$result = mysql_query($query);
Alors comment faire pour ne faire qu'une seule insertion avec le switch ?
J'ai aussi oublié de préciser que par la suite seront ajoutés d'autre bouton radio donc impossible de faire une fusion des deux codes.

Re: Bouton radio et base de donnée

Posté : 24 juin 2011, 16:26
par Mazarini
Rien ne t'empêche de faire seul insert et de modifier ton insert à chaque ajout de données.

Autrement, il existe "update" pour modifier un enregistrement.
Pour info, la fonction mysql_insert_id() permet de récupérer l'id attribué en autoincrément après un insert.
Mais ne fait pas un insert suivi de plusieurs update.

Re: Bouton radio et base de donnée

Posté : 24 juin 2011, 17:04
par johanetpirlouit
A quel moment je dois utiliser la fonction update dans mon code ?

Re: Bouton radio et base de donnée

Posté : 25 juin 2011, 14:18
par Ryle
L'instruction insert en sql, comme son nom l'indique, va insérer un nouvel enregistrement en base. Donc si tu exécutes trois insert consécutifs dans ta base, tu vas inévitablement te retrouver avec 3 enregistrements différents :)

L'instruction update en sql te permet de mettre à jour un ou plusieurs enregistrements qui ont déjà été enregistrés en base. Tu peux ainsi par exemple récupérer l'identifiant de l'enregistrement que tu viens d'insérer (insert), afin de le mettre à jour (update).

Cependant, d'après ton code, tu pourrais tout insérer d'un seul coup (en un seul insert) en spécifiant les colonnes et les valeurs que tu es en train d'enregistrer. A noter par ailleurs que ton test n'est pas judicieux : si la valeur de $sexe est F, tu insères F, si la valeur est H, tu insères H. Pourquoi est ce que tu n'enregistre pas la valeur de $sexe sans te poser de question ? :)
$query = "INSERT INTO $table (nom,prenom,sexe)";
$query .= " VALUES('$nom', '$prenom', '$sexe')"; 
$result = mysql_query($query);