Se connecter avec
S'enregistrer | Connectez-vous

Probleme avec insersion de données dans une DB

Dernière réponse : dans Programmation

voila j'ai fait une sorte de formulaire avec des champs a remplir.
Mais le probleme est lorsque je valide l'inscription (je teste en local) je bascule bien vers la page PHP.
Il devrait avoir un message qui s'affiche sur la page pour confirmer l'inscription mais il n'apparait pas, de plus lorsque je vérifie dans la DB les valeur que j'avais donné dans le champs n'y sont pas. Donc la personne n'est pas inscrite.
Je ne comprend pas pourquoi...
voila le code du formulaire:
  1. <form method="post" action="ajouter.php">
  2. Date d'inscription(au format YYYY-mm-jj):<input type="text" name="date_debut" size="20" />
  3.  
  4.  
  5.  
  6.  
  7. Date de fin d'abonnement (au format YYYY-mm-jj)<input type="text" name="date_fin" size="20" />
  8.  
  9.  
  10.  
  11.  
  12. Dureé de l'abonnement:<input type="text" name="duree" size="20" />
  13.  
  14.  
  15.  
  16.  
  17. Particularité (ecole, hôpital, praticien...):<input type="text" name="particularite" size="20" />
  18.  
  19.  
  20.  
  21.  
  22. Civilité (si praticien): <input type="text" name="civilite" size="20" />
  23.  
  24.  
  25.  
  26.  
  27. Nom:<input type="text" name="noma" size="20" />
  28.  
  29.  
  30.  
  31.  
  32. Prénom (si praticien):<input type="text" name="prenoma" size="20" />
  33.  
  34.  
  35.  
  36.  
  37. Adresse:<input type="text" name="adresse" size="20" />
  38.  
  39.  
  40.  
  41.  
  42. Ville:<input type="text" name="ville" size="20" />
  43.  
  44.  
  45.  
  46.  
  47. Code Postal:<input type="text" name="code_postal" size="20" />
  48.  
  49.  
  50.  
  51.  
  52. Type d'abonnement: <input type="text" name="type" size="20" /> (lecteur, annonceur, adherent)
  53.  
  54.  
  55.  
  56.  
  57. Renouvellement d'abonnement:<input type="text" name="renouvellement" size="20" /> (Oui, Non)
  58.  
  59.  
  60.  
  61.  
  62. Offre de fidélisation:<input type="text" name="offre_fidelisation" size="20" /> (Oui, Non)
  63.  
  64.  
  65.  
  66.  
  67. <input type="submit" name="submit" value="Ajouter">
  68. </form>


et voici le code de la page PHP pour qui devrait inséré les données entrées:
  1. function ajouter() {
  2.  
  3. //connexion à la base
  4. $db = mysql_connect('localhost','root','') or die ('erreur de connexion');
  5. //sélection de la base
  6. mysql_select_db('a16',$db);
  7.  
  8. //J'identifie les variables
  9. $prenoma = $_POST["prenoma"];
  10. $noma = $_POST["noma"];
  11. $adresse = $_POST["adresse"];
  12. $ville = $_POST["ville"];
  13. $code_postal = $_POST["code_postal"];
  14. $date_debut = $_POST["date_debut"];
  15. $date_fin = $_POST["date_fin"];
  16. $duree = $_POST["duree"];
  17. $particularite = $_POST["particularite"];
  18. $civilite = $_POST["civlite"];
  19. $type = $_POST["type"];
  20. $renouvellement = $_POST["renouvellement"];
  21. $offre_fidelisation = $_POST["ofrre_fidelisation"];
  22.  
  23. //J'envoie la requête d'insertion des données
  24. mysql_query("INSERT INTO localisation VALUES('$adresse','$ville','$code_postal','$particularite',`titre` ='abonne','$type' )");
  25. mysql_query("INSERT INTO abonnement VALUES('$date_debut','$date_fin','$type','$renouvellement','$offre_fidelisation','$duree','$noma','$adresse')");
  26. mysql_query("INSERT INTO abonne VALUES('$noma','$prenoma','$cilivite','$date_debut')");
  27.  
  28. //Je récupère les données du formulaire
  29. echo "$civilite $noma $prenoma
  30. inscrit le $date_debut
  31. habitant à : $adresse $code_postal $ville
  32. a bien été inscrit. ";
  33.  
  34. //on ferme la connexion
  35. mysql_close();
  36. }


merci d'avance de votre aide.

Autres pages sur : probleme insersion donnees

Lassé par la pub ? Créez un compte

Tu peux déjà vérifier que les données du formulaires sont bien récupérées en affichant le contenu des variables.

Il faut pas préciser les champs dans INSERT INTO?
  1. INSERT INTO Nom_Table
  2. (Champ_1, Champ_2)
  3. VALUES (Valeur_1, Valeur_2)

(A moins que tu ne modifies tous les champs de ta table à chaque fois)

Par contre, c'est quoi ça dans ta commande: `titre` ='abonne' ?

Et puis tu as fait des fautes de frappe:
Citation :

friksstyle a écrit :
$civilite = $_POST["civlite"];
$offre_fidelisation = $_POST["ofrre_fidelisation"];

Ben dans le tutos que j'ai trouvé ils ne disent pas de préciser le champs a remplir (peut etre parce qu'ils suivent l'ordre des champs et il n'y a qu'une seule table je viens de penser...).
Et puis dans la commande entiere je pensait qu'il saurait reconnaitre que $adresse correspond au champs adresse de la table en question.
Apres pour la commande `titre` = 'abonne'
je voulais que le champs titre prenne comme chaine de caractere la valeur abonne.

donc tu pense qu'il faudrai faire correspondre champs1 avec valeur1? je demande car c'est la 1ere fois que je fait ca ;-)
PS: merci pour la faute de frappe ^^

Avec quelque chose dans ce genre là, ça dépend du nom de tes champs:

INSERT INTO localisation (Adresse, Ville, CP, Particularité, Titre, Type) VALUES('$adresse','$ville','$code_postal','$particularite','$abonne','$type' )");

Tu précises d'abord les champs à ajouter, et ensuite leur valeurs.

Mais si ta table localisation ne contient que les champs Adresse, Ville, CP, Particularité, Titre et Type, tu peux écrire comme ça (même si à mon avis la première solution est meilleure pour éviter de futures erreurs):
INSERT INTO localisation VALUES('$adresse','$ville','$code_postal','$particularite','$abonne','$type' )");

Un lien:
http://www.laltruiste.com/document.php?url=http://www.laltruiste.com/courssql/cmd_insertinto.html

tu peux aussi voir si tes requetes sont bien executées comme ca :

mysql_query(marequete) or die(mysql_error());

et puis ca sert pour le debug ^^.


comme ca, si tout se passe bien, la tu peux dire que ton user a reelement ete inscrit, mais dire que ton user est inscrit sans qu'il y ait de test sur le resultat de ta requete, c'est un peu limite ! ^^

je viens d'essayer et j'ai un parse error.
voila ma requete:
mysql_query("INSERT INTO localisation ('adresse', 'ville', 'code_postal', 'particularite', 'titre', 'type') VALUES('$adresse','$ville','$code_postal','$particularite',$titre,'$type' )");

bien sur j'ai essayé avec et sans les apostrophes.
pourriez vous m'aidez en me disant ce qui ne va pas. merci encore

lu, j'ai regardé ca vite fait et je suis pas pros mais c'est peut etre une erreur avec la concatenation(g pas fait de faute ? lol ). Ah et si tu rajoutez des commentaires ca serait mieux ton code est tres dur à lire et parfois un peu rotor. Efin pour ce qui est de verifier et afficher un message de validation à tes utilisateurs je vois pas ou ta integré la chose.

edito : je viens de verifier je previens ca fait longtps que j'ai pas coder en php mais en regardant un vieux script a moi :

mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");

il semble que ta syntaxe avec les variable ds la equete sql soit fausse essaye avec celle la et dit nous. JE viens de voir qu'on voit trois apostrophe en fait c'est une apostrophe et des guillmet : '-"

  1. mysql_query("INSERT INTO localisation ('adresse', 'ville', 'code_postal', 'particularite', 'titre', 'type') VALUES(' ".$adresse." ',' ".$ville." ',' ".$code_postal." ',' ".$particularite." ',$titre,' ".$type." ' )");




Pour des valeurs VARCHAR faut les encapsulé dans des simples quotes . Pas pour les valeurs numériques.

bon pour le parse erreur c'etait un point virgule qui manquait avant désolé ><
mais en fait je ne veut pas forcément voir un message pour informer les utilisateur que le message a bien été rentré. c'est pour cela qu'il n'y en avait pas.
J'ai essayé avec un simple tuto (une seule table) et ca marche.
Donc il doit y avoir qqch de faux.
je vais essayer avec les codes donné par naphtaline et gamerome

EDIT: avec les code montré apostrophes puis guillemet cela ne marche pas...il doit surement avoic une erreur avant ou qqch comme ca.
Je continue a chercher.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde