Se connecter / S'enregistrer
Votre question

Enregistrement de données de formulaire dans une BDD en PHP

Tags :
  • Erreur de syntaxe
  • Programmation
Dernière réponse : dans Programmation
3 Août 2010 18:07:31

Bonjour,

Voila j'ai un problème, j'ai fait un formulaire et j'essaye que lorsque les gens entrent qqchose dans un champ du formulaire cela s'enregistre dans ma BDD

Voila mon code :

  1. <form method="post" action="traitement.php">
  2.  
  3. <dl>
  4. <dt><label><input type="checkbox" name="choix1" id="choix1" onchange="affchoix(this.id)" />Je l'ai</label></dt>
  5. <dd id="donneeschoix1"><textarea name=textarea_choix1 id=textarea_choix1 rows=1 cols=5></textarea></dd>
  6.  
  7. <br />
  8.  
  9. <dt><label><input type="checkbox" name="choix2" id="choix2" onchange="affchoix(this.id)" />Je la cherche</label></dt>
  10. <dd id="donneeschoix2"><textarea name=textarea_choix2 id=textarea_choix2 rows=1 cols=5></textarea></dd>
  11.  
  12. <br />
  13.  
  14. <dt><label><input type="checkbox" name="choix3" id="choix3" onchange="affchoix(this.id)" />Je ne la cherche pas</label></dt>
  15. <dd id="donneeschoix3"><textarea name=textarea_choix3 id=textarea_choix3 rows=1 cols=5></textarea></dd>
  16.  
  17. <br />
  18.  
  19. <dt><label><input type="checkbox" name="choix4" id="choix4" onchange="affchoix(this.id)" />Je l'attends</label></dt>
  20. <dd id="donneeschoix4"><textarea name=textarea_choix4 id=textarea_choix4 rows=1 cols=5 ></textarea></dd>
  21.  
  22. <br />
  23.  
  24. <dt><label><input type="checkbox" name="choix5" id="choix5" onchange="affchoix(this.id)" />Je l'ai en double</label></dt>
  25. <dd id="donneeschoix5"><textarea name=textarea_choix5 id=textarea_choix5 rows=1 cols=5 ></textarea></dd>
  26.  
  27.  
  28. </dl>
  29.  
  30. <input type="submit" value="Valider">
  31.  
  32. </form>
  33.  
  34.  
  35.  
  36. <?php
  37. try
  38. {
  39. $bdd = new PDO('mysql:host=localhost;dbname=perok6_gestion', 'perok6', 'd5swpsr');
  40.  
  41. }
  42. catch(Exception $e)
  43. {
  44. die('Erreur : '.$e->getMessage());
  45. }
  46.  
  47. <?php
  48. $req = $bdd->prepare('INSERT INTO gestion(case_1_ai, case_2_cherche, case_3_pas, case_4_attend, case_5_double) VALUES($_POST['choix1'], $_POST['choix2'], $_POST['choix3'], $_POST['choix4'], $_POST['choix4'], $_POST['choix1'])');
  49.  
  50.  
  51. echo 'Les Modifications ont bien été enregistrées !';
  52. ?>


Mais j'ai un probleme, quand j'essaye sur wamp cela m'affiche ça : Parse error: parse error in C:\wamp\www\Formulaire\fiche_bretagne.php on line 128

Pouvez-vous m'aider ?

Merci d'avance,
Cordialement !

Autres pages sur : enregistrement donnees formulaire bdd php

3 Août 2010 18:36:08

Bonsoir perok68,

L'erreur est assez explicite, tu as une erreur de syntaxe à la ligne 128 de ton fichier fiche_bretagne.php.

J'imagine que c'est la ligne :
  1. $req = $bdd->prepare('INSERT INTO gestion(case_1_ai, case_2_cherche, case_3_pas, case_4_attend, case_5_double) VALUES($_POST['choix1'], $_POST['choix2'], $_POST['choix3'], $_POST['choix4'], $_POST['choix4'], $_POST['choix1'])');


Qu'il faudrait remplacer par quelque chose du genre :
  1. $req = $bdd->prepare('INSERT INTO gestion(case_1_ai, case_2_cherche, case_3_pas, case_4_attend, case_5_double) VALUES('.$_POST['choix1'].', '.$_POST['choix2'].', '.$_POST['choix3'].','. $_POST['choix4'].','.$_POST['choix4'].', '.$_POST['choix1'].')');


Mais ça sent l'injection SQL ça quand même :) 
m
0
l
3 Août 2010 18:58:35

Re bonsoir,

En fait je pense qu'il serait plus judicieux de tout refaire !

Donc pour résumer, je veux que lorsque que l'utilisateur rentre une donnée dans un textarea (après avoir cocher la checkbox) cela s'enregistre dans ma BDD

Dans ma BDD , une table : "gestion" qui contient 6 champs, voici les 6 champs : pseudo, case_1_ai, case_2_cherche, case_3_pas, case_4_attend, case_5_double.

Et enfin j'ai un formulaire (qui, lorsque l'on coche la checkbox un textarea apparait pour entrer ses données) .

Maintenant , il faut passer au concret !
Je pense qu'il faudrait passer par la variable superglobale $_POST qui est en relation avec mon formulaire.
Donc c'est quelquechose avec "INSERT INTO gestion" etc ... mais je ne sais pas si il faut prendre une requete préparée ... et comment bien faire par la suite ..

Pouvez-vous m'aider SVP ?
Ce serait très gentil !

Merci d'avance,
Cordialement !

m
0
l
Contenus similaires
a c 232 L Programmation
3 Août 2010 20:39:35

Salut,

Regarde l'exemple #2 ici: http://php.net/mysql_query

Ca te montre une bonne méthode pour faire une requête paramétrée.
m
0
l
3 Août 2010 20:44:16

Je ne comprend pas bien ...
m
0
l
4 Août 2010 08:33:21

Je ne comprends pas bien a quoi me sert ce que tu me montres comme lien ....
m
0
l
a c 232 L Programmation
4 Août 2010 09:08:23

Bah c'est toi qui demande des informations sur les requêtes préparées.
Là tu as des exemples de requêtes préparées qui te montrent comment bien faire des requêtes préparées, tout en évitant les SQL Injections (en ne mettant pas de $_POST directement dans ta requête sans les échapper...)
m
0
l
4 Août 2010 09:54:10

Re,

Oui mais pourrais tu a m'aider a faire mon code car j'en ai fait un nouveau maintenant :

insertion1.php

  1. <html>
  2. <head>
  3. <title>insertion de données en PHP :: partie 1</title>
  4. </head>
  5. <body>
  6. <form name="insertion" action="insertion2.php" method="POST">
  7. <table border="0" align="center" cellspacing="2" cellpadding="2">
  8. <tr align="center">
  9. <td>nom</td>
  10. <td><input type="text" name="nom"></td>
  11. </tr>
  12. <tr align="center">
  13. <td>prenom</td>
  14. <td><input type="text" name="prenom"></td>
  15. </tr>
  16. <tr align="center">
  17. <td>adresse</td>
  18. <td><input type="text" name="adresse"></td>
  19. </tr>
  20. <tr align="center">
  21. <td>code postal</td>
  22. <td><input type="text" name="codePostal"></td>
  23. </tr>
  24. <tr align="center">
  25. <td>numéro de téléphone</td>
  26. <td><input type="text" name="telephone"></td>
  27. </tr>
  28.  
  29. <tr align="center">
  30. <td colspan="2"><input type="submit" value="insérer"></td>
  31. </tr>
  32. </table>
  33. </form>
  34. </body>
  35. </html>


et insertion2.php :

  1. <?php
  2. //connection au serveur
  3. $cnx = mysql_connect( "localhost", "perok6", "monmotdepassejuste" ) ;
  4.  
  5.  
  6. //récupération des valeurs des champs:
  7. //nom:
  8. $nom = $_POST["nom"] ;
  9. //prenom:
  10. $prenom = $_POST["prenom"] ;
  11. //adresse:
  12. $adresse = $_POST["adresse"] ;
  13. //code postal:
  14. $cp = $_POST["codePostal"] ;
  15. //numéro de téléphone:
  16. $tel = $_POST["telephone"] ;
  17.  
  18. //création de la requête SQL:
  19. $sql = "INSERT INTO gestion (case_1_ai, case_2_cherche, case_3_pas, case_4_attend, case_5_double)
  20. VALUES ( '$nom', '$prenom', '$adresse', '$cp', '$tel') " ;
  21.  
  22. //exécution de la requête SQL:
  23. $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  24.  
  25. //affichage des résultats, pour savoir si l'insertion a marchée:
  26. if($requete)
  27. {
  28. echo("L'insertion a été correctement effectuée") ;
  29. }
  30. else
  31. {
  32. echo("L'insertion à échouée") ;
  33. }
  34. ?>


Mais il m'affiche un message d'erreur apres avoir rempli mon formulaire et avoir validé :

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'perok6'@'localhost' (using password: NO) in /home/perok6/www/lol/insertion2.php on line 6

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/perok6/www/lol/insertion2.php on line 6

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/perok6/www/lol/insertion2.php on line 25
Access denied for user 'perok6'@'localhost' (using password: NO)

Mais mes identifiants sont justes !!
Peux tu m'aider ?
Merci .
m
0
l
a c 232 L Programmation
4 Août 2010 12:52:51

Et bah non ils ne sont pas justes, si l'erreur te le dit.
Et d'après l'erreur, tu n'as pas spécifié de mot de passe (using password: NO)
m
0
l
4 Août 2010 13:47:34

En effet, quel idiot :D 

Encore une question, maintenant après avoir rempli le formulaire, il m'affiche ce message d'erreur :

Unknown column 'case_5_double' in 'field list'

Comment résoudre ce problème ?

Merci d'avance :) 

EDIT : j'ai fait fait une faute de frappe dans phpMyAdmin , excusez moi :) 
m
0
l
4 Août 2010 14:11:36

Maintenant, ça marche !!!!!!

Mais, comment puis je récupérer le pseudo de la personne connecté car j'ai un champ "pseudo" dans phpmyadmin mais je ne veux pas que les utilisateur aient a le rentrer. Pouvez vous m'aider ?
m
0
l
a c 232 L Programmation
4 Août 2010 14:16:04

C'est que la colonne case_5_double n'existe pas dans la base de données.

Edit: mince, t'as répondu entre temps.

Tu fais un SELECT pseudo FROM taTable WHERE ta_condition
m
0
l
4 Août 2010 14:36:30

Mais en fait je veux que lorsque l'utilisateur se connecte, en meme temps qu'il clique sur Valider du formulaire son pseudo est récupéré et enregistré dans une autre table (et dans un champ deja créé)que celle ou il y a tous les pseudo et mdp.

Est ce bien ce que tu m'as indiqué ?
m
0
l
a c 232 L Programmation
4 Août 2010 17:08:11

A quoi va te servir ta deuxième table ?

Si tu veux connecter un utilisateur, il ne faut pas stocker ça dans une table, mais dans les sessions
m
0
l
4 Août 2010 17:13:54

Je me suis mal exprimé, je veux récupéré le pseudo de quelqu'un, qui est ,(le pseudo) stocké dans une autre table. Comment faire ?
m
0
l
a c 232 L Programmation
4 Août 2010 17:23:24

Bah pour récupérer des données depuis une table, c'est un SELECT pseudo FROM laTable

Le problème est de savoir avec quelle(s) donnée(s) tu peux récupérer ce pseudo ? Est-ce que tu as une adresse mail par exemple, qui te permet d'avoir un pseudo en fonction d'une adresse, ou quelque chose comme ça ?

Parce qu'il faudra que tu récupères le bon pseudo :) 
m
0
l
4 Août 2010 17:49:29

Oui il y a une adresse mail par membre et un mot de passe donc ensuite je fais ça comment ?
m
0
l
a c 232 L Programmation
4 Août 2010 18:14:01

SELECT pseudo FROM laTable WHERE mail = 'lemail'
m
0
l
4 Août 2010 18:22:13

Oui merci :) 

Mais ou dois je l'inserer dans mon code ? je ne vois pas vraiment ...
Deja dans insertion2.php, ça c'est sur ! Mais ou exactement ?
m
0
l
a c 232 L Programmation
4 Août 2010 19:25:32

C'est une requête SQL, que tu exécutes avec mysql_query
m
0
l
4 Août 2010 20:40:36

Je mets quoi comme nom de variable ?
Et je place ou la ligne de code ?
m
0
l
a c 232 L Programmation
4 Août 2010 23:00:40

...

Apprends un peu à coder en PHP avant de vouloir faire je sais pas quoi... Commence par le siteduzero.
m
0
l
5 Août 2010 08:17:37

Le PHP, je connais.
Sauf que certains truc m'échappent et je vous demande des conseils ...
Donc: ou-dois-je mettre la ligne de code ?

Merci !
m
0
l
a c 232 L Programmation
5 Août 2010 09:48:38

Comment veux-tu que je sache dans quel fichier tu dois mettre ça moi ?
C'est ton projet, avec ton arborescence de fichiers, ta façon de penser/organiser...etc.

Je ne suis pas devin :spamafote: 

Tu sais quel est le but de ta requête, donc tu sais à quel moment tu vas en avoir besoin.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS