Insertion SQL via formulaire

Fermé
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 - 14 oct. 2008 à 17:07
Stef60 Messages postés 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 - 14 oct. 2008 à 18:44
Bonjour à tous et merci de votre attention,

Je suis actuellement en train de créer un script d'espace membre, celui-ci fonctionne trés bien mais je veux y créer une page ou l'utilisateur peut entrer diverses informations à sa convenance telle que : pays, ville, msn etc ...

Le problème est que ma requête d'insertion semble incorrecte vu qu'elle m'affiche une erreur. Et je n'arrive pas à trouver le problème, je fais donc appel à votre aide et vous met le code en dessous :

<body>
Informations personnelles :<br />
<form id="modif_profil" name="modif" method="post" action="membre.php" />
Pays : <input type="text" name="pays" value="<?php echo htmlentities(trim($_POST['pays'])); ?>" /><br />
Ville : <input type="text" name="ville" value="<?php echo htmlentities(trim($_POST['ville'])); ?>" /><br />
Code Postal : <input type="text" name="CP" value="<?php echo htmlentities(trim($_POST['code_postal'])); ?>" /><br />
</form>

<?php
// lancement de la requête d'insertion
$sql = 'INSERT INTO membre VALUES(""
,"'.mysql_escape_string($_POST['pays']).'"
,"'.mysql_escape_string($_POST['ville']).'")';

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
?>
</body>

Si quelqu'un à une idée, je suis bien entendu preneur. Merci d'avançe ;)

Brice.
A voir également:

13 réponses

hani_ Messages postés 333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 18 novembre 2009 20
14 oct. 2008 à 17:28
Oui il lui faut tout les champs, et dans les valeur il faut lui spécifier une valeur nulle pour qu'il ne l'insère pas

INSERT INTO nom_table ( [nom_champs1], [nom_champs2], [nom_champs3]) VALUES ("", "valeur2", ""); 


ici on insère une valeur à nom_champs2.
1
hani_ Messages postés 333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 18 novembre 2009 20
14 oct. 2008 à 17:09
quelle est l'erreur indiqué ?
-1
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
14 oct. 2008 à 17:10
Erreur : Notice: Undefined index: pays in D:\EasyPHP 2.0b1\www\site\espace_membre\modifier_profil.php on line 23

Notice: Undefined index: ville in D:\EasyPHP 2.0b1\www\site\espace_membre\modifier_profil.php on line 24
Erreur SQL !INSERT INTO membre VALUES(" " ,"" ,"")
Column count doesn't match value count at row 1

Merci de ta réponse.
-1
hani_ Messages postés 333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 18 novembre 2009 20
14 oct. 2008 à 17:17
INSERT INTO nom_table ( [nom_champs1], [nom_champs2], [nom_champs3])
VALUES ("valeur1", "valeur2", "valeur3");

voila a quoi devrait ressembler ta requête sql.

les "nom_champs" doivent être ici dans le MEME ordre que dans la base de données. les "valeur" doivent être EXACTEMENT dans le MEME ordre.

éviter les caractères spéciaux, les accents, etc etc.
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
14 oct. 2008 à 17:26
Ok mais dans ma BDD j'ai avant les champs pays, ville, code_postal les champs id, pseudo, pass je dois les spécifier quand même ?

Merci
-1
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
14 oct. 2008 à 17:37
Merci de ta réponse, je te met ici ma requête :

$sql = INSERT INTO membre ([id], [login], [pass_md5], [pays], [ville], [code_postal])
VALUES ("", "", "", "$pays", "$ville", "$code_postal");

Tout est bien dans le bon ordre, je viens de le vérifier sur ma BDD mais ça ne fonctionne pas et m'affiche l'erreur :

Parse error: parse error, unexpected T_STRING in D:\EasyPHP 2.0b1\www\site\espace_membre\modifier_profil.php on line 22

Merci encore de ton attention.
-1
hani_ Messages postés 333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 18 novembre 2009 20
14 oct. 2008 à 17:43
vas sur ta bdd et tente de rentrer ta requete directement en remplaçant les variables par des valeur quelconque pour tester la requête.

sinon essais de faire un echo $sql ; qui affichera la requête sous forme sql.

le parse error indique généralement un oublie de guillemet.

faire attention qu'il n'y en ai pas dans les valeurs sinon il faudra utiliser des caractères d'échappement pour le forcer a les prendre.
-1
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
14 oct. 2008 à 17:47
Voilà ce que me renvois la requête :

requête SQL:

INSERT INTO membre( [id], [login], [pass_md5], [pays], [ville], [code_postal] )
VALUES (
"", "", "", "pays", "ville", "code_postal"
)

MySQL a répondu:Documentation
#1064 - Erreur de syntaxe près de '[id], [login], [pass_md5], [pays], [ville], [code_postal])
VAL' à la ligne 1

Sinon non, i n'ya pas de guillemet à l'interieur de mes champs et le echo $sql ne me renvois rien si ce n'est la même erreur cité juste avant.

Encore merci.
-1
hani_ Messages postés 333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 18 novembre 2009 20
14 oct. 2008 à 17:53
j'ai un doute mais essai sans les crochets.

et utilise des ' à la place des ".
-1
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
14 oct. 2008 à 17:55
Ca ne fonctionne pas non plus.
-1
hani_ Messages postés 333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 18 novembre 2009 20
14 oct. 2008 à 18:07
$sql = INSERT INTO membre ("id,login,pass_md5,pays,ville,code_postal")
VALUES ("'','','', '$pays', '$ville', '$code_postal'");

copie colle celle là pour tester normalement c'est bon...


par contre c'est un insert into (il vas crée une nouvelle ligne dans ta table)
pour completer une ligne déjà existante c'est un update qu'il faut faire.

$sql = "UPDATE nom_table SET nom_champs0 = 'valeur_champs0' --->(a chaque champs a modifier répéter la syntaxe) WHERE nom_champ='nom_champ_a_modifier' ";
-1
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
14 oct. 2008 à 18:12
Merci encore mais j'ai toujours cette même erreur. Par contre je ne comprend pas trop la syntaxe de la seconde commande qu'il faut que j'utilise, pourrais tu me l'expliquer un peu mieu s'ilteplait ?

merci
-1
Stef60 Messages postés 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 41
14 oct. 2008 à 18:44
Bonjour,
et comme ca :

$sql = "INSERT INTO membre (id, login, pass_md5, pays, ville, code_postal)
VALUES ( "" , "" , "" , "$pays" , "$ville" , "$code_postal" )";

ou comme ca:
$sql = "INSERT INTO membre (`id`, `login`, `pass_md5`, `pays`, `ville`, `code_postal`)
VALUES ( "" , "" , "" , "$pays" , "$ville" , "$code_postal" )";
-1