Votre question

Formulaire et base de donnée mysql

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
6 Décembre 2009 18:45:38

Bonjour à tous
Je suis entrain de m'entrainer en PHP et Mysql.
Je suis confronté a un problème de requête SQL.
Donc il s'agit tout simplement de remplir le champ "nom" de la table Type via un formulaire qui pointe sur le fichier test1.php

Voici le code du formulaire form.phtm:
  1. <html>
  2. <head>
  3. <body>
  4. <title>Test</title>
  5. <form method="post" action="test1.php">
  6. <input type="text" name="nom">
  7. </input>
  8. <input type="submit" value="Entrer"></input>
  9. </form>
  10. </body>
  11. </head>
  12. </html>



et le code PHP test1.php
  1. <?php
  2. if (isset($_POST['nom']))
  3. {
  4. $pseudo=($_POST['nom']);
  5. }
  6.  
  7. $adresse="localhost";
  8. $login="root";
  9. $password="xxxx";
  10. $dbname="mediatheque";
  11.  
  12. $connexion=mysql_connect($adresse,$login,$password)
  13. or die ('Impossible de se connecter à la base de donnée'.mysql_error());
  14.  
  15. mysql_select_db($dbname,$connexion);
  16.  
  17. $query=(INSERT INTO Type (nom) VALUES ($pseudo);
  18. mysql_query($query);
  19.  
  20. mysql_close($connexion);
  21. ?>


Lorsque j'envoi les données via le formulaire voici ce que j'obtiens:
Parse error: parse error in D:\Programme\Program files\EasyPHP\EasyPHP5.3.0\www\test1.php on line 17

Y a t-il un Pb de syntaxe?
Cordialement

Autres pages sur : formulaire base donnee mysql

6 Décembre 2009 20:22:30

Bonjour,

  1. $query=mysql_query("INSERT INTO Type VALUES ('".$pseudo."');
m
0
l
Contenus similaires
6 Décembre 2009 20:35:58

Merci de m'avoir répondu et il me semble qu'il y a toujours le même problème qui apparait.
J'ai fait un copier coller de ton code, après avoir fait ca les deux dernières lignes de codes apparaissent gris.
  1. $query=mysql_query("INSERT INTO Type VALUES ('".$pseudo."');


Puis j'ai même inclus le " après la dernière parenthèse, puisque tu en a mis 1 avant INSERT INTO mais toujours le même problème.
Cordialement
m
0
l
6 Décembre 2009 20:44:51

  1. <?php
  2. if (isset($_POST['nom']))
  3. {
  4. $pseudo= $_POST['nom'];
  5. }
  6.  
  7. $adresse="localhost";
  8. $login="root";
  9. $password="mrlover";
  10. $dbname="mediatheque";
  11.  
  12. $connexion=mysql_connect($adresse,$login,$password)
  13. or die ('Impossible de se connecter à la base de donnée'.mysql_error());
  14.  
  15. mysql_select_db($dbname,$connexion);
  16.  
  17. $query=("INSERT INTO type VALUES(",'$pseudo')");
  18.  
  19. mysql_query($query,$connexion);
  20.  
  21. mysql_close($connexion);
  22. ?>


Toujours le même problème sauf que j'ai corriger une erreur a la ligne 17
m
0
l
6 Décembre 2009 20:46:15

sa réponse ne t'aide pas vu qu'il y'a aussi une faute de syntaxe, je t'ai mi un lien, à toi de jouer.
m
0
l
6 Décembre 2009 20:47:37

De plus, cela ne sert à rien de c/c à l'aveuglette sans rien vouloir comprendre...
m
0
l
6 Décembre 2009 22:02:56

Ouaip désolé pas fais attention:

  1. $query=mysql_query("INSERT INTO Type VALUES ('".$pseudo."')");
m
0
l
9 Décembre 2009 19:06:59

Bonjour

J'ai repéré les erreurs, mais la j'ai un nouveau problème avec les isset.
  1. <?php
  2. if (isset($_POST['nom']) && (!empty($_POST['nom'])))
  3. {
  4.  
  5. $nom=$_POST['nom'];
  6. }
  7. else
  8. {
  9. $nom="";
  10. echo "La case est vide";
  11.  
  12. }
  13.  
  14. $adresse="localhost";
  15. $login="root";
  16. $password="xxxx";
  17. $dbname="mediatheque";
  18.  
  19. $connexion=mysql_connect($adresse,$login,$password)
  20. or die ('Impossible de se connecter à la base de donnée'.mysql_error());
  21.  
  22. mysql_select_db($dbname,$connexion);
  23.  
  24.  
  25. $sql = "INSERT INTO type (id, nom) VALUES ('','$nom')";
  26.  
  27. mysql_query($sql,$connexion);
  28.  
  29. mysql_close($connexion);
  30.  
  31.  
  32. ?>


Ca m'affiche une page blanche.
m
0
l
9 Décembre 2009 19:19:56

ok j'ai trouvé la réponse ^^
m
0
l
14 Décembre 2009 12:22:16

Hello,

As tu conscience que si dans le formulaire quelqu'un s'amuse à mettre une apostrophe dans le champ $nom le script plante ? Suppose que le nom de la personne soit "d'agobert", la requête envoyée au serveur en l'état sera la suivante :

  1. INSERT INTO type (nom) VALUES ('d'agobert');


PourD'après cette requête, le champ nom a pour valeur "d" et ensuite il y a "agobert" qui ne correspond à rien, d'où plantage.

http://www.php.net/manual/fr/function.mysql-real-escape-string.php

D'ailleurs cette façon de gérer les données en provenance des utilisateurs consititue un gros risque de sécurité. Regarde la partie sur l'injection de script sql, tu verras pourquoi il est important de toujours nettoyer les variables en provenance des utilisateurs, c'est qu'ils peuvent être chafouins quand ils veulent ;) 

De plus, je te conseille de mettre les paramêtres de connexion à la db dans un fichier externe, ex config.php, parce qui si un jour les paramêtres d'accès à cette base changent, tu n'auras pas à retourner dans tous tes scripts pour les modifier. Avec un fichier de configuration général que tu inclus dans tes scripts, une seule modification sera nécessaire.

Et au passage, se connecter au serveur en root : pas bon, voire même dangereux pour un serveur de front, parce que normalement l'utilisateur root a tous les droits, y compris celui de vider ou supprimer des tables.

Bon développement :) 
m
0
l
14 Décembre 2009 12:31:55

Bonjour hadaya

Merci beaucoup de cette réponse très pertinente, j'ai appris beaucoup de chose en si peu de temps. :) 
Comme quoi il y a des personnes qui s'intéressent à mon post.
Mille merci en tt cas
ciao
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