Votre question

probleme insertion donnée dans base de donnée a partir d'un formulaire

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
21 Août 2006 18:19:38

Bonjour,
Voila petit souci je viens de me mettre au php et mysql avec base de donnée et tout le tralala enfin bref...
donc le truc est la je vous presente le code que j'ai écris:

<form action="connexion_bdd.php" method="post">
<b>pseudo:</b><input type="text" name="pseudo"><br>
<b>sujet:</b><input type="text" name="sujet"><br>
<b>texte:</b><br><textarea rows="5" cols="45" name="texte"></textarea><br>

<?
mysql_connect("localhost","root","");
mysql_select_db("news");
mysql_query("INSERT INTO news(id,pseudo,sujet,texte) VALUES ('', 'pseudo', 'sujet', 'texte')");
mysql_close();
?>

<input type="submit" value="valider">

</form>


maintenant le probleme :IE m'indique que les variables 'pseudo', 'sujet', 'texte' n'existent pas quelqu'un aurait une solution?merci d'avance

Autres pages sur : probleme insertion donnee base donnee partir formulaire

21 Août 2006 19:28:15

Je vois quelques petits problèmes...

Tout d'abord, quand tu appuies sur "Valider", le script contenu dans "action" s'exécute. Ici, il doit simplement se connecter à la base de données. Je ne vois donc pas pourquoi tu te connectes une deuxième fois à l'intérieur du formulaire.

Ainsi, il vaudrait mieux que tu transformes ta balise "form" de la manière suivante :

  1. <form method="POST" action="formulaire.php">


Ensuite, dans ton fichier formulaire.php, tu y places le morceau de code suivant (les commentaires viennent après) :

  1. <?php
  2. include('connect_db');
  3.  
  4. $pseudo = htmlentities($_POST['pseudo']);
  5. $sujet = htmlentities($_POST['sujet']);
  6. $texte = htmlentities($_POST['texte']);
  7.  
  8. mysql_query('INSERT INTO news ( pseudo, sujet, texte ) VALUES ( \'$pseudo\', \'$sujet\', \'$texte\' )';
  9.  
  10. ?>


Tout d'abord, on se connecte à ta base de données.

On récupère ensuite les variables de ton formulaire, postées par la méthode POST. Ainsi, la variable contenant la valeur postée de pseudo est $_POST['pseudo']. On sécurise un peu le tout en évitant l'injection méchante de scripts avec la fonction htmlentities.

Enfin, on insère dans ta table le nouvel enregistrement. Je rappelle que les slashs (ou antislashs ? enfin, les trucs là : \ ) sont le caractère d'échappement. Ceci soulève une autre question : pourquoi n'avoir mis que des simples guillemets ? J'ai lu sur plusieurs sites que c'était un peu plus rapide. Je sais pas si c'est exact. Mais bon...

A noter que je n'ai pas rajouté l'id dans la requête SQL. Si tu veux l'ajouter, je pense qu'il vaudrait mieux lui attribuer la valeur null, pour qu'il incrémente tout seul. Sinon, il risque de mettre une valeur vide. Pas sûr non plus sur ce coup-là.

Bonne continuation !
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