Se connecter / S'enregistrer
Votre question

Comment alimenter une base de données mysql via php à l\'aide d\'un formulaire

Tags :
  • Serveur
  • Programmation
Dernière réponse : dans Programmation
27 Juin 2011 16:49:43

je n'arrive pas à alimenter ma base de données mysql automatiquement. quand j'envoie les données à partir de mon formulaire; on me retourne une page d'erreur disant que l'URL requise n'a pu être trouvée sur ce serveur. et je ne sais quoi faire;si vous avez une solution proposez la moi. merçi d'avance

Autres pages sur : alimenter base donnees mysql via php aide formulaire

27 Juin 2011 17:18:42

Salut, peux-tu poster le code de la page qui contient le formulaire, et de celle qui est censée le traiter (ansi que son nom) ?
m
0
l
28 Juin 2011 14:50:10

171995,1,1587804 a dit :
je n'arrive pas à alimenter ma base de données mysql automatiquement. quand j'envoie les données à partir de mon formulaire; on me retourne une page d'erreur disant que l'URL requise n'a pu être trouvée sur ce serveur. Je n'ai plus ce problème mais celui que j'ai maintenant est que lorsque j'envoie les données depuis mon formulaire, ma base est remplie de lignes vides et non pas des données envoyées et je ne sais quoi faire; merci de m'aider. voici le code:
<?PHP

$nom= isset($_post['nom'])?$_post['nom']:"";

$prenom= isset($_post['prenom'])?$_post['prenom']:"";

$adresse= isset($_post['adresse'])?$_post['adresse']:"";

$telephone= isset($_post['telephone'])?$_post['telephone']:"";

$profession= isset($_post['profession'])?$_post['profession']:"";

$sql="INSERT INTO identification (nom,prenom,adresse,telephone,profession) VALUES('".$nom."','".$prenom."','".$adresse."','".$telephone."','".$profession."')";

mysql_query($sql) or die ('erreur sql!'.$sql.'<br/>'.mysql_error());

mysql_close();

?>
m
0
l
Contenus similaires
29 Juin 2011 15:39:09

Bonjour.
Déjà je n'arrive pas a comprendre tes lignes

  1. $nom= isset($_post['nom'])?$_post['nom']:"";
  2.  
  3. $prenom= isset($_post['prenom'])?$_post['prenom']:"";
  4.  
  5. $adresse= isset($_post['adresse'])?$_post['adresse']:"";
  6.  
  7. $telephone= isset($_post['telephone'])?$_post['telephone']:"";
  8.  
  9. $profession= isset($_post['profession'])?$_post['profession']:"";


En gros tu veux que $prenom prenne la valeur du $_post['prenom'] que l'utilisateur aura rentré ?
Dans ce cas c'est comme cela qu'il faut faire :

  1. if(isset($_POST['prenom'])
  2. $prenom = $_POST['prenom'];


ensuite le code que tu as mis :

  1. VALUES('".$nom."','".$prenom."','".$adresse."','".$telephone."','".$profession."')";


n'est pas bon, il faut que tu fasses :

  1. VALUES('$nom','$prenom','$adresse','$telephone','$profession')";

m
0
l
a c 232 L Programmation
29 Juin 2011 17:09:29

danydan01 a dit :
Bonjour.
Déjà je n'arrive pas a comprendre tes lignes

  1. $nom= isset($_post['nom'])?$_post['nom']:"";
  2.  
  3. $prenom= isset($_post['prenom'])?$_post['prenom']:"";
  4.  
  5. $adresse= isset($_post['adresse'])?$_post['adresse']:"";
  6.  
  7. $telephone= isset($_post['telephone'])?$_post['telephone']:"";
  8.  
  9. $profession= isset($_post['profession'])?$_post['profession']:"";


En gros tu veux que $prenom prenne la valeur du $_post['prenom'] que l'utilisateur aura rentré ?
Dans ce cas c'est comme cela qu'il faut faire :

  1. if(isset($_POST['prenom'])
  2. $prenom = $_POST['prenom'];


ensuite le code que tu as mis :

  1. VALUES('".$nom."','".$prenom."','".$adresse."','".$telephone."','".$profession."')";


n'est pas bon, il faut que tu fasses :

  1. VALUES('$nom','$prenom','$adresse','$telephone','$profession')";


Son code affiché est bon hein...
condition ? vrai : faux; est une condition ternaire, donc bonne.
Et sa concaténation est bonne.

Mais on n'a pas le formulaire ni le nom du fichier php, alors on peut pas dire ce qui ne va pas.
m
0
l
30 Juin 2011 10:09:00

OmaR a dit :
Son code affiché est bon hein...
condition ? vrai : faux; est une condition ternaire, donc bonne.
Et sa concaténation est bonne.

Mais on n'a pas le formulaire ni le nom du fichier php, alors on peut pas dire ce qui ne va pas.

j'ai essayé de faire tout ce que vous me proposez mais cela me renvoyait des lignes vides dans ma base de données et je ne sais pourquoi puisque je respecte la procédure. merci de votre aide voilà mon code complet:
formulaire.php

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>formulaire d'insertion</title>
  5. </head>
  6. <body>
  7. <h1>Enregistrez vous!</h1>
  8. <h2>Saisissez les données indiquées :</h2>
  9. <form name=" insertion" method="post" action="formulaire1.php">
  10. nom:
  11. <input type="text" name="nom" />
  12. prénom : <input type="text" name="prénom" /><br>
  13. adresse : <input type="text" name="adresse" />
  14. téléphone: <input type="text" name="téléphone"/><br>
  15. profession : <input type="text" name="profession" />
  16. livre : <input type="text" name="livre" /><br>
  17. jour : <input type="text" name="jour" />
  18. <input type="submit" name="submit" value="insérer"/>
  19. </form>





code php(formulaire1.php)

  1. if(isset($_post['submit'])){
  2. //récupération des valeurs saisies par l'utilisateur
  3. $nom= $_post['nom'];
  4. $prenom= $_post['prenom'];
  5. $adresse= $_post['adresse'];
  6. $telephone= $_post['telephone'];
  7. $profession= $_post['profession'];
  8. //connexion à la base de données en utilisant notre fonction de connexion
  9. //on prépare la commande sql qu'on stocke dans une variable
  10. $sql="INSERT INTO identification (nom,prénom,adresse,téléphone,profession) VALUES ('$nom','$prénom','$adresse','$téléphone','$profession')";
  11. //execution de la requete
  12. mysql_query($sql) or die ('erreur sql!'.$sql.'<br/>'.mysql_error());
  13. //on ferme la connexion
  14. mysql_close();
  15.  
  16. }


m
0
l
30 Juin 2011 10:45:26

Dans ton fichier formulaire1.php fait des echo de tes variable nom prenom et tout ça pour voir si tu as bien les valeurs saisie.
Si tu as bien les bonnes valeurs cela veux dire que l'erreur viens du code sql.
Tiens nous au jus =)

P.S (pour Omar) : Je savais pas que cette syntaxe exister, tu viens de m'apprendre un truc ^^ je dormirais moins con se soir ;) 
m
0
l
a c 145 L Programmation
30 Juin 2011 10:49:00

J'espère que name="prénom" et name="téléphone" sont des erreurs de copie et que tu n'as pas mis d'accents dans ces attributs.

Et il faut bien faire attention à la casse (majuscules/minuscules), c'est $_POST et pas $_post

Edit rapide pour danydan01:
l'avantage de ce qui a été fait par dalvine avec sa condition ternaire, c'est qu'il n'y aura jamais de warning comme quoi une variable n'a pas été définie et que le traitement tiens sur une ligne. Je sais, on pourrait le faire de la manière suivante:
  1. if (isset($_POST['nom'])) { $nom = $_POST['nom']; } else { $nom = ''; }

Mais c'est vite illisible.
m
0
l
a c 232 L Programmation
30 Juin 2011 11:38:18

Ta variable s'appelle "prenom" et "telephone" mais dans le code SQL, tu mets $prénom et $téléphone
Et puis, comme a dit crazycat, il vaut mieux éviter les accents dans les nom des input, et aussi dans les noms des colonnes SQL.
m
0
l
30 Juin 2011 15:36:25

crazycat@idn a dit :
J'espère que name="prénom" et name="téléphone" sont des erreurs de copie et que tu n'as pas mis d'accents dans ces attributs.

Et il faut bien faire attention à la casse (majuscules/minuscules), c'est $_POST et pas $_post

Edit rapide pour danydan01:
l'avantage de ce qui a été fait par dalvine avec sa condition ternaire, c'est qu'il n'y aura jamais de warning comme quoi une variable n'a pas été définie et que le traitement tiens sur une ligne. Je sais, on pourrait le faire de la manière suivante:
  1. if (isset($_POST['nom'])) { $nom = $_POST['nom']; } else { $nom = ''; }

Mais c'est vite illisible.


oui c'est une erreur de copie et j'ai dejà utitlisé toutes vos propositions mais sans succès. si vous pouvez m'envoyer un exemple de code permettant d’insérer des données ds une base de données à l'aide d'un formulaire cela me permettrait de voir mes erreurs. mais j'ai aussi penser que cela pouvait etre du à la version de logiciel de base de données utilisée(moi j'utilise easy php version 5). merci pour votre aide
m
0
l
a c 145 L Programmation
30 Juin 2011 15:59:43

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>formulaire d'insertion</title>
  5. </head>
  6. <body>
  7. <h1>Enregistrez vous!</h1>
  8. <h2>Saisissez les données indiquées :</h2>
  9. <form name=" insertion" method="post" action="formulaire1.php">
  10. nom: <input type="text" name="nom" />
  11. prénom : <input type="text" name="prenom" /><br>
  12. adresse : <input type="text" name="adresse" />
  13. téléphone: <input type="text" name="telephone"/><br>
  14. profession : <input type="text" name="profession" />
  15. livre : <input type="text" name="livre" /><br>
  16. jour : <input type="text" name="jour" />
  17. <input type="submit" name="submit" value="insérer"/>
  18. </form>

  1. <?php
  2. if (count($_POST)>0) {
  3. // Penser à mettre la connexion à la base
  4. $con = mysql_connect('localhost', 'root', 'pass');
  5. $db = mysql_select_db($con, 'base');
  6. //récupération des valeurs saisies par l'utilisateur
  7. $nom = isset($_POST['nom']) ? $_POST['nom'] : '';
  8. $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';
  9. $adresse = isset($_POST['adresse']) ? $_POST['adresse'] : '';
  10. $telephone= isset($_POST['telephone']) ? $_POST['telephone'] : '';
  11. $profession= isset($_POST['profession']) ? $_POST['profession'] : '';
  12. $sql="INSERT INTO identification (nom,prenom,adresse,telephone,profession) VALUES ('".$nom."','".$prenom."','".$adresse."','".$telephone."','".$profession."')";
  13. //execution de la requete
  14. mysql_query($sql) or die ('erreur sql!'.$sql.'<br/>'.mysql_error());
  15. //on ferme la connexion
  16. mysql_close();
  17. }


Edit : Petite astuce
En mettant les mêmes noms aux inputs et aux champs de la table, on peut faire un code très simplifié:
  1. <?php
  2. if (count($_POST)>0) {
  3. $sql = "INSERT INTO table (`".implode('`, `', array_keys($_POST))."`) VALUES ('".implode(array_values('\', \'', $_POST))."')";
  4. mysql_query($sql);
  5. }

C'est bien sûr très simplifié, il faut (comme pour tout formulaire envoyé) vérifier l'intégrité et la cohérence.
m
0
l
1 Juillet 2011 17:52:40

crazycat@idn a dit :
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>formulaire d'insertion</title>
  5. </head>
  6. <body>
  7. <h1>Enregistrez vous!</h1>
  8. <h2>Saisissez les données indiquées :</h2>
  9. <form name=" insertion" method="post" action="formulaire1.php">
  10. nom: <input type="text" name="nom" />
  11. prénom : <input type="text" name="prenom" /><br>
  12. adresse : <input type="text" name="adresse" />
  13. téléphone: <input type="text" name="telephone"/><br>
  14. profession : <input type="text" name="profession" />
  15. livre : <input type="text" name="livre" /><br>
  16. jour : <input type="text" name="jour" />
  17. <input type="submit" name="submit" value="insérer"/>
  18. </form>

  1. <?php
  2. if (count($_POST)>0) {
  3. // Penser à mettre la connexion à la base
  4. $con = mysql_connect('localhost', 'root', 'pass');
  5. $db = mysql_select_db($con, 'base');
  6. //récupération des valeurs saisies par l'utilisateur
  7. $nom = isset($_POST['nom']) ? $_POST['nom'] : '';
  8. $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';
  9. $adresse = isset($_POST['adresse']) ? $_POST['adresse'] : '';
  10. $telephone= isset($_POST['telephone']) ? $_POST['telephone'] : '';
  11. $profession= isset($_POST['profession']) ? $_POST['profession'] : '';
  12. $sql="INSERT INTO identification (nom,prenom,adresse,telephone,profession) VALUES ('".$nom."','".$prenom."','".$adresse."','".$telephone."','".$profession."')";
  13. //execution de la requete
  14. mysql_query($sql) or die ('erreur sql!'.$sql.'<br/>'.mysql_error());
  15. //on ferme la connexion
  16. mysql_close();
  17. }


Edit : Petite astuce
En mettant les mêmes noms aux inputs et aux champs de la table, on peut faire un code très simplifié:
  1. <?php
  2. if (count($_POST)>0) {
  3. $sql = "INSERT INTO table (`".implode('`, `', array_keys($_POST))."`) VALUES ('".implode(array_values('\', \'', $_POST))."')";
  4. mysql_query($sql);
  5. }

C'est bien sûr très simplifié, il faut (comme pour tout formulaire envoyé) vérifier l'intégrité et la cohérence.

je l'ai essayé mais ça ne fonctionne tjrs pas. le serveur me renvoie ceci: objet non trouvé . j'ai essayé avec ce code ci-dessous qui rempli bien ma table mais le seul problème est que sur la page ou l'utilisateur doit remplir; le serveur stipule ceci: undefined variable p_nom juska p_profession mais quand j'entre les données ds le formulaire; ma base est correctement remplie: stp essaie de tester et de trouver ce qui pose problème. thanks again
formulaire et code
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>formulaire d'insertion</title>
</head>
<body>
<h1>Enregistrez vous!</h1>
<h2>Saisissez les données indiquées :</h2>
<form name=" insertion" method="post" action="formulaire.php">
nom: <input type="text" name="nom" /><br>
prenom : <input type="text" name="prenom" />
adresse : <input type="text" name="adresse" /><br>
telephone: <input type="text" name="telephone"/>
profession : <input type="text" name="profession" /><br>
livre: <input type="text" name="livre" />
jour: <input type="text" name="jour" /><br>
<input type="submit" name="submit" value="insérer"/>
</form>
<?php
//importe les variables globales récupérées d'un GET ou POST; valeur "p"ou"P" pour POST
import_request_variables("p","p_");
$hostname_Connexion_bd = "localhost";
$database_Connexion_bd = "personnel";
$username_Connexion_bd = "root";
$password_Connexion_bd = "";
$Connexion_bd = mysql_pconnect($hostname_Connexion_bd, $username_Connexion_bd, $password_Connexion_bd) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_Connexion_bd, $Connexion_bd);
mysql_query("INSERT INTO identification VALUES('$p_nom','$p_prenom','$p_adresse','$p_telephone','$p_profession')") or die ('erreur sql!'.$sql.'<br/>'.mysql_error());
mysql_close();
?>
</body>
</html>
m
0
l
a c 145 L Programmation
3 Juillet 2011 17:15:02

Il serait bon que tu utilises la balsie [ code ] (sans les espaces) pour mettre en forme ton code.

Le souci vient de ce que tu ne vérifies pas que des données ont bien été postées. Il te suffit donc de rajouter une petite condition pour ne plus avoir ces alertes:
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>formulaire d'insertion</title>
  5. </head>
  6. <body>
  7. <h1>Enregistrez vous!</h1>
  8. <h2>Saisissez les données indiquées :</h2>
  9. <form name=" insertion" method="post" action="formulaire.php">
  10. nom: <input type="text" name="nom" /><br>
  11. prenom : <input type="text" name="prenom" />
  12. adresse : <input type="text" name="adresse" /><br>
  13. telephone: <input type="text" name="telephone"/>
  14. profession : <input type="text" name="profession" /><br>
  15. livre: <input type="text" name="livre" />
  16. jour: <input type="text" name="jour" /><br>
  17. <input type="submit" name="submit" value="insérer"/>
  18. </form>
  19. <?php
  20. if (count($_POST)>0) {
  21. //importe les variables globales récupérées d'un GET ou POST; valeur "p"ou"P" pour POST
  22. import_request_variables("p","p_" );
  23. $hostname_Connexion_bd = "localhost";
  24. $database_Connexion_bd = "personnel";
  25. $username_Connexion_bd = "root";
  26. $password_Connexion_bd = "";
  27. $Connexion_bd = mysql_pconnect($hostname_Connexion_bd, $username_Connexion_bd, $password_Connexion_bd) or trigger_error(mysql_error(),E_USER_ERROR);
  28. mysql_select_db($database_Connexion_bd, $Connexion_bd);
  29. mysql_query("INSERT INTO identification VALUES('$p_nom','$p_prenom','$p_adresse','$p_telephone','$p_profession')" ) or die ('erreur sql!'.$sql.'<br/>'.mysql_error());
  30. mysql_close();
  31. }
  32. ?>
  33. </body>
  34. </html>
m
0
l
4 Juillet 2011 12:00:55

crazycat@idn a dit :
Il serait bon que tu utilises la balsie [ code ] (sans les espaces) pour mettre en forme ton code.

Le souci vient de ce que tu ne vérifies pas que des données ont bien été postées. Il te suffit donc de rajouter une petite condition pour ne plus avoir ces alertes:
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>formulaire d'insertion</title>
  5. </head>
  6. <body>
  7. <h1>Enregistrez vous!</h1>
  8. <h2>Saisissez les données indiquées :</h2>
  9. <form name=" insertion" method="post" action="formulaire.php">
  10. nom: <input type="text" name="nom" /><br>
  11. prenom : <input type="text" name="prenom" />
  12. adresse : <input type="text" name="adresse" /><br>
  13. telephone: <input type="text" name="telephone"/>
  14. profession : <input type="text" name="profession" /><br>
  15. livre: <input type="text" name="livre" />
  16. jour: <input type="text" name="jour" /><br>
  17. <input type="submit" name="submit" value="insérer"/>
  18. </form>
  19. <?php
  20. if (count($_POST)>0) {
  21. //importe les variables globales récupérées d'un GET ou POST; valeur "p"ou"P" pour POST
  22. import_request_variables("p","p_" );
  23. $hostname_Connexion_bd = "localhost";
  24. $database_Connexion_bd = "personnel";
  25. $username_Connexion_bd = "root";
  26. $password_Connexion_bd = "";
  27. $Connexion_bd = mysql_pconnect($hostname_Connexion_bd, $username_Connexion_bd, $password_Connexion_bd) or trigger_error(mysql_error(),E_USER_ERROR);
  28. mysql_select_db($database_Connexion_bd, $Connexion_bd);
  29. mysql_query("INSERT INTO identification VALUES('$p_nom','$p_prenom','$p_adresse','$p_telephone','$p_profession')" ) or die ('erreur sql!'.$sql.'<br/>'.mysql_error());
  30. mysql_close();
  31. }
  32. ?>
  33. </body>
  34. </html>


sur la page de mon formulaire le message suivant est toujours retourné:
undefined variable p_nom juska P_profession. stp as-tu testé ce code toi meme. je suis confuse et j'ai tout essayé toujours pas de solution
m
0
l
a c 145 L Programmation
4 Juillet 2011 13:00:55

J'ai fait un test en mettant exactement ce code, aucune erreur ni warning.
Est-il possible de voir ta page (url ?)
m
0
l
4 Juillet 2011 13:42:04

crazycat@idn a dit :
J'ai fait un test en mettant exactement ce code, aucune erreur ni warning.
Est-il possible de voir ta page (url ?)


j'ai saisi le code de nouveau et la page de remplissage du formulaire s'affiche sans erreur; sauf que quand je rempli le formulaire et que je clique sur le bouton d'envoi ce message m'est retourné et je ne sais ce que ça signifie:

Objet non trouvé!

L'URL requise n'a pu etre trouvée sur ce serveur. La référence sur la page citée semble être erronée ou perimée. Nous vous prions d'informer l'auteur de cette page de cette erreur.

Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.
Error 404
127.0.0.1
07/04/11 13:35:50
Apache/2.2.17 (Win32) PHP/5.3.3
m
0
l
a c 145 L Programmation
4 Juillet 2011 17:24:39

Ta page s'appelle bien formulaire.php ?
Et tout le code donné est bien dans un seul fichier ?
m
0
l
4 Juillet 2011 17:33:41

crazycat@idn a dit :
Ta page s'appelle bien formulaire.php ?
Et tout le code donné est bien dans un seul fichier ?

oui tout le code donné est bien dans un seul fichier. teste ton code et verifie que les données insérées sont bien dans ta base de données. ou s'il existe d'autres methodes plus simple fait moi part ce serait bénéfique pour moi. thanks
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