Se connecter avec
S'enregistrer | Connectez-vous

Formulaire et base de donnée mysql

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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

  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

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.

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 :) 
Lassé par la pub ? Créez un compte
Tom's guide dans le monde