Problème $_POST & MySql

Fermé
garinsha20 - 25 mars 2008 à 14:11
 Utilisateur anonyme - 26 mars 2008 à 12:18
Bonjour,

J'ai un soucis.
Je travaille mon code sur FrontPage et niveau table sur MySql.
J'ai un formulaire que je remplis, & je veux récupérer les données et les envoyer vers mes tables SQL.
C'est là que je coince.
VOici mon code :

<?php
include ("connexion.php");

$num=1;
$sql = "INSERT INTO Maitre ('num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_inscr') VALUES(($_POST['num']),($_POST['nom']),($_POST['prenom']),($_POST['email']),($_POST['mdp']),'R','13/05/2008')";
mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());

Le problème, c'est que dans mon formulaire je ne saisis pas le numéro du maître, donc j'ai mis une varible comme valeur 1 à la place.
Le message d'erreur recurrent est le suivant : Syntaxe Error ... incorrect ligne1.

Si vous pouviez m'aider je vous en remercie.
Bonne Journée

12 réponses

Utilisateur anonyme
25 mars 2008 à 14:31
Bonjour,

je suppose que le numéro du maitre est le numéro de l'enregistrement dans la table, qu'il a té défini en auto-incrémentation ?
si oui la requêt devient :

$sql = "INSERT INTO Maitre VALUES('',$_POST['nom'],$_POST['prenom'],$_POST['email'],$_POST['mdp'],'R','13/05/2008')";
0
Rebonjour,
merci d'avoir répondu à mon problème!

Le soucis c'est que j'ai déjà essayé par la suite de mettre exactement la même chose, à savoir mettre la valeur NULL ou alors comme tu la montré.
Cependant celà ne fonctionne pas.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"INSERT INTO Maitre ('num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_in' at line 1

VOilà le message d'erreur précis.
0
Utilisateur anonyme > garinsha20
25 mars 2008 à 15:09
tu n'as pas ici fait excatement ce qui était écrit car tu as laissé ('num_m', etc
0
Je suis de retour et j'ai un nouveau message d'erreur, j'espère que vous pourrez m'éclairez?

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

avec ce code_ci que j'ai modifié (souhait de mon chef)

$sql = "INSERT INTO Maitre (idmaitre,nommaitre,prenommaitre,mailmaitre,mdpmaitre,etatmaitre,dateinscrmaitre) VALUES(NULL,($_POST['nom']),($_POST['prenom']),($_POST['email']),($_POST['mdp']),'R','2008/05/13')";
mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
25 mars 2008 à 14:34
Ta question aurait mérité d'être plus élaborée : en particulier un copier/coller du message d'erreur aurait été appréciable.

Supposons que ce message vienne de la fonction die : examine bien la commande mysql rejetée qui est affichée ce qui te permettra de trouver ton erreur.

Son examen devrait te conduire à modifier comme suit ton script :
$sql = "INSERT INTO Maitre"
	. "('num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_inscr')"
	. " VALUES(" . $_POST['num']
		. ",'" . $_POST['nom']
		. ",'" . $_POST['prenom']
		. "','" . $_POST['email']
		. "','" . $_POST['mdp']
		. ",'R','13/05/2008')";
mysql_query($sql) or die ('Erreur SQL !' . $sql . '...' . mysql_error());


Qu'est-ce-que ca donne ? As-tu compris ce qui n'allait pas ?

Autre sujet : je ne comprends pas bien "je ne saisis pas le numéro du maître"

Si cette info correspond à num_m et si c'est la clef identifiant de manière unique le "maître" à modifier, tu dois demander cette info dans ton formulaire car php, malgré toutes ces qualités, ne peut pas la deviner.
0
Rebonjour et merci d'avoir répondu à mon problème

Voici le message d'erreur.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"INSERT INTO Maitre ('num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_in' at line 1

Je n'ai effectivement pas tout compris à votre raisonnement...
Désolé
0
Utilisateur anonyme > garinsha20
25 mars 2008 à 14:51
queqlues explications supplémentaires

dans la première demande l'erreur de syntaxe vient je pense des paraenthèses en trop dans la clause VALUES.
$sql = "INSERT INTO Maitre VALUES('',$_POST['nom'],$_POST['prenom'],$_POST['email'],$_POST['mdp'],'R','13/05/2008')";

d'autre part : num_m c'est quoi ?
$num = 1; ne sert à rien ...

dans ma prelière réponse j'ai supposé que c'était le n° de l'enregistrement dans la base, alors si tu veux plus de précisions , tu prends une version imprimable de la structure de la base et tu la colles dans une réponse.
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
25 mars 2008 à 14:52
As-tu essayé avec le morceau de code de mon précédent message ?

Voudrais-tu essayer avec ce nouveau morceau de code qui affichera la suite de la commande mysql
$sql = "INSERT INTO Maitre"
	. "('num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_inscr')"
	. " VALUES(" . $_POST['num']
		. ",'" . $_POST['nom']
		. ",'" . $_POST['prenom']
		. "','" . $_POST['email']
		. "','" . $_POST['mdp']
		. ",'R','13/05/2008')";
//	affichage pour deboguage
$i = strpos( $sql, ")" ); echo '<br>...' . substr( $sql, $i+1 ) . '<br>';
//	exécution commande mysql
mysql_query($sql) or die ('Erreur SQL !' . $sql . '...' . mysql_error());


Tu as deux pbs, commençons par le premier (erreur de syntaxe mysql) sans le mélanger avec le second (choix du maître à modifier) que nous verrons ensuite.
0
Utilisateur anonyme
25 mars 2008 à 14:56
je te laisse la main car inutile de lui faire faire des choses différentes en même temps...
0
Je viens d'executer le code que vous m'avez envoyé, voici le message d'erreur :

... VALUES(,'dfg,'dfg','0000d@dd.com','sdf,'R','13/05/2008')
Erreur SQL !INSERT INTO Maitre('num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_inscr') VALUES(,'dfg,'dfg','0000d@dd.com','sdf,'R','13/05/2008')...You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_inscr') VALUES(,'dfg,'d' at line 1

Que faire ... ?
0
Utilisateur anonyme > garinsha20
25 mars 2008 à 15:00
enleèves les quote dans ça

INSERT INTO Maitre('num_m','nom_m','prenom_m','mail_m','mdp','etat_m','date_inscr')
0
Bonjour

Il ne faut pas d' 'apostrophes' autour des noms de champs, mais des `accents graves` (ou rien du tout si tu n'as pas de caractères spéciaux)
0
Bonjour Monsieur, désolé pour tout à l'heure je ne vous ai pas répondu mais j'avais bcp de sollicitations et j'essayais en même temps le code de votre confrère.

Je suis de retour et j'ai un nouveau message d'erreur, j'espère que vous pourrez m'éclairez?

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

avec ce code_ci que j'ai modifié (souhait de mon chef)

$sql = "INSERT INTO Maitre (idmaitre,nommaitre,prenommaitre,mailmaitre,mdpmaitre,etatmaitre,dateinscrmaitre) VALUES(NULL,($_POST['nom']),($_POST['prenom']),($_POST['email']),($_POST['mdp']),'R','2008/05/13')";
mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
0
le père > garinsha20
25 mars 2008 à 16:56
Ton chef n'est pas un chef en php, il te fait écrire des bêtises !
Continue avec croy, qui a toujours été de bon conseil depuis le début.
0
garinsha20 > le père
25 mars 2008 à 17:03
Rebonjour,
Vu que Croy met du temps à repondre... et que j'aimerai si possible règler le problème avant 17h30, est-ce possible que l'on continu tous les 2 ?

Merci
0
le père > garinsha20
25 mars 2008 à 17:04
ok
Et si possible de garder cette syntaxe plutot que d'aller à la ligne ou autre, car mon chef n'aime pas!
Il a bien tort. C'est vrai qu'on peut, mais ça ne sera pas plus clair. Il faut retirer les parenthèses autour de chaque valeur dans le VALUES et utiliser la notation complexe pour les variables ${_POST['nom']} etc..
Le seul intérêt est de faire taire le chef, ce qui n'est pas forcément négligeable
0
garinsha20 > le père
25 mars 2008 à 17:11
J'ai de nouveau testé votre syntaxe et il me semble qu'il y ait une amélioration :
voici le code :
$sql = "INSERT INTO Maitre (idmaitre,nommaitre,prenommaitre,mailmaitre,mdpmaitre,etatmaitre,dateinscrmaitre) VALUES(NULL,${_POST['nom']},${_POST['prenom']},${_POST['email']},${_POST['mdp']},'R','2008-05-13');
mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());

echo 'Youpi !!!.';
mysql_close();

?>

Cependant , le message d'erreur suivant s'affiche :
Parse error: syntax error, unexpected T_STRING in /home/.sites/28/site1/web/mail.php on line 42

La ligne 42 étant la ligne après .mysql_error());

y'a t'il une amélioration?
0

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

Posez votre question
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
25 mars 2008 à 15:00
Exact le père a raison : pas d'apostrophes avant les noms de variables.

Le code que je suggère d'insérer devient :
$sql = "INSERT INTO Maitre"
	. "(num_m,nom_m,prenom_m,mail_m,mdp,etat_m,date_inscr)"
	. " VALUES(" . $_POST['num']
		. ",'" . $_POST['nom']
		. ",'" . $_POST['prenom']
		. "','" . $_POST['email']
		. "','" . $_POST['mdp']
		. ",'R','13/05/2008')";
//	affichage pour deboguage
$i = strpos( $sql, ")" ); echo '<br>...' . substr( $sql, $i+1 ) . '<br>';
//	exécution commande mysql
mysql_query($sql) or die ('Erreur SQL !' . $sql . '...' . mysql_error())
0
Merci encore de m'aider ....

je viens à nouveau d'executer le code :

... VALUES(NULL ,'dfg,'dfg','0000d@dd.com','sdf,'R','13/05/2008')
Erreur SQL !INSERT INTO Maitre(num_m,nom_m,prenom_m,mail_m,mdp,etat_m,date_inscr) VALUES(NULL ,'dfg,'dfg','0000d@dd.com','sdf,'R','13/05/2008')...You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dfg','0000d@dd.com','sdf,'R','13/05/2008')' at line 2

il y a un changement, il m'écrit 'at line 2' tout à l'heure c'était line1 ?
Ca progresse ou ça ne veut rien dire?
0
Les noms des tables et des champs, pas des variables...
0
Je suis de retour et j'ai un nouveau message d'erreur, j'espère que vous pourrez m'éclairez?

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

avec ce code_ci que j'ai modifié (souhait de mon chef)

$sql = "INSERT INTO Maitre (idmaitre,nommaitre,prenommaitre,mailmaitre,mdpmaitre,etatmaitre,dateinscrmaitre) VALUES(NULL,($_POST['nom']),($_POST['prenom']),($_POST['email']),($_POST['mdp']),'R','2008­/05/13')";
mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());

Et si possible de garder cette syntaxe plutot que d'aller à la ligne ou autre, car mon chef n'aime pas!
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
25 mars 2008 à 15:06
Tu as fait un nouvel essai qui montre que la partie qui suit VALUES ( commence par une virgule ce qui n'est pas "légal".

Ta variable $_POST[ 'num' ] doit être vide : que rentres-tu dans le champ num de ton formulaire ?
Comment est définie ta variable mysql num_m ?

Si c'est un identifiant avec AUTO_INCREMENT : supprime simplement la référence à cette variable et ton code devient :
$sql = "INSERT INTO Maitre"
	. "(nom_m,prenom_m,mail_m,mdp,etat_m,date_inscr)"
	. " VALUES('" . $_POST['nom']
		. ",'" . $_POST['prenom']
		. "','" . $_POST['email']
		. "','" . $_POST['mdp']
		. ",'R','13/05/2008')";
//	affichage pour deboguage
$i = strpos( $sql, ")" ); echo '<br>...' . substr( $sql, $i+1 ) . '<br>';
//	exécution commande mysql
mysql_query($sql) or die ('Erreur SQL !' . $sql . '...' . mysql_error());
0
Merci beaucoup, voilà tout :

Ma requête :
$sql = "INSERT INTO Maitre"
. "(idmaitre,nommaitre,prenommaitre,mailmaitre,mdpmaitre,etatmaitre,dateinscrmaitre)"
. " VALUES('" . $_POST['nom']
. ",'" . $_POST['prenom']
. "','" . $_POST['email']
. "','" . $_POST['mdp']
. ",'R','13/05/2008')";
// affichage pour deboguage
$i = strpos( $sql, ")" ); echo '<br>...' . substr( $sql, $i+1 ) . '<br>';
// exécution commande mysql
mysql_query($sql) or die ('Erreur SQL !' . $sql . '...' . mysql_error());


Mon message d'erreur :
... VALUES('sqdqsd,'qsdqsd','0000d@dd.com','qsd,'R','13/05/2008')
Erreur SQL !INSERT INTO Maitre(idmaitre,nommaitre,prenommaitre,mailmaitre,mdpmaitre,etatmaitre,dateinscrmaitre) VALUES('sqdqsd,'qsdqsd','0000d@dd.com','qsd,'R','13/05/2008')...You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'qsdqsd','0000d@dd.com','qsd,'R','13/05/2008')' at line 1

Les déclarations de mes champs dans la table Maitre:
idmaitre => integer, autoincrémenté, defaut value=NULL
nommaitre => varchar
prenommaitre => varchar
mailmaitre => varchar
mdpmaitre => varchar
etatmaitre => varchar
dateinscrmaitre => datetime

VOilà tout chef!
0
Je dirais surtout qu'il manque une apostrophe entre la fin du champ 'nom' et la virgule
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
25 mars 2008 à 15:13
C'est vrai mais :
- ce n'est pas le pb principal qui est que $_POST['num'] est null
- il n'est pas inutile de faire réfléchir les demandeurs en regardant des messages insérés pour le debugging

Manifestement, notre demandeur n'a pas compris ce qu'était un champ unique et un AUTO_INCREMENT (comment est définie sa table)

Amenons le progressivement à trouver lui-même la solution.
0
le père > croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012
25 mars 2008 à 15:18
tu as tout à fait raison et je m'efface
0
garinsha20 > croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012
25 mars 2008 à 15:31
Ma chef veut jouer les chefs ... donc je lui laisse le boulot pendant un p'tit moment, je vous recontacte quand je reprend la main.!

Elle est en train de voir le code
0
Utilisateur anonyme
25 mars 2008 à 15:16
$sql = "INSERT INTO Maitre ";
$sql .= "VALUES('','";
$sql .= $_POST['nom'];
$sql .= "','";
$sql .= $_POST['prenom'];
$sql .= "','";
$sql .= $_POST['num'];
$sql .= "','";
$sql .= $_POST['email'];
$sql .= "','";
$sql .= $_POST['mdp'];
$sql .= "','R','13/05/20008'";


mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
25 mars 2008 à 17:40
C'est effectivement complexe de travailler sur ce fil.

Je te rappelle mes conseils/demandes précédentes (message n° 13).

Suis les à la lettre :
- pour le code, fait un copier/coller au lieu de resaisir, exécute et donne-nous (copier/coller) les messages exacts ainsi que ton analyse
- il est aussi TRES utile que tu précises la structure de ta table (SHOW CREATE TABLE CLIENT)

J'attends ces éléments pour poursuivre.

PS : si ta chef n'aime pas les retours à la ligne, rien ne t'empêche pour mettre au point d'en mettre car c'est bien plus clair quitte à les supprimer ensuite pour produire un code compacte et illisible.
0
Utilisateur anonyme
25 mars 2008 à 17:46
Voir message n° 31
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
25 mars 2008 à 18:01
Nous allons procéder une étape à la fois.

Etape 1 : Corriger ta commande mysql.

Elle contient une erreur de syntaxe qu'il faut :
Etape 1.1- comprendre
Etape 1.2- corriger le script pour générer une commande correcte

Pour l'étape 1.1 (comprendre l'erreur de syntaxe), regarde bien le message d'erreur ... VALUES('sqdqsd,'qsdqsd','0000d@dd.com','qsd,'R','13/05/2008')

Est-ce-que qqch te semble bizarre. Un petir coup de pouce : à quoi servent les apostrophes ? est-ce-qu'il n'en manquerait pas une ?

Merci de ton analyse pour que nous puissions finaliser l'étape 1.1 avant de passer à 1.2...


Pour finir, un point important : répond à ce message en cliquant sur le "Répondre à croy" qui est juste en dessous.
0
Bonjour Monsieur Croy,
Pouquoi cette dernière phrase ?
La réponse sera liée à votre dernier message et ne vous sera pas transmise personnellement.
cordiales salutations
Jacques
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114 > JacquesK
26 mars 2008 à 09:12
C'est bien ce que j'ai compris du fonctionnement du forum :
- cliquer Répondre à .... poste un message dans le forum et sous le message répondu avec un décalage vers la droite
- cliquez Ajouter en bas de la discussion poste également un message dans le forum mais l'ajoute à la fin de la discussion

J'ai mis cette mention car la présente discussion est cahotique, les réponses n'étant pas affichée après le message répondu.
0
JacquesK > croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012
26 mars 2008 à 09:14
re bonjour
Ok
bonne journée
Jacques
0
Bonjour Croy, merci d'être au rendez-vous aujourd'hui!

Oui effectivement dans le message d'erreur, il manque une simple cote, après VALUES (' ..., '...') il manque une simple cote sur la première valeur, à savoir le nommaitre.

Maintenant, j'ai du mal à saisir pourquoi il en manque une.

Merci de répondre!
0
garinsha20 > garinsha20
26 mars 2008 à 11:32
ok c'est encore moi!
Effectivement dans mon code, il manquait une simple cote! (erreur d'innatention)
Cependant je viens de la rajouter ... et celà ne fonctionne toujours pas , je suppose que ceci est logique; et que nous allons nous tourner vers l'étape 1.2 si je ne me trompe?
0
Utilisateur anonyme
26 mars 2008 à 12:18
Garinsha20

J'ai déposé une PJ écrite exprès pour vous à cet endroit -> https://www.cjoint.com/?dAmrjUliOD

en espérant que les explications soient claires
0