Erreur de syntaxe près de

Résolu
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 - 16 janv. 2008 à 16:34
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 - 5 déc. 2008 à 10:57
bonjour je fais un mysql_query
mysql_query("UPDATE log SET nom='$_POST[nom]', prenom='$_POST[prenom]', adresse='$_POST[adresse]', ville='$_POST[ville]', fixe='$_POST[fixe]', mobile='$_POST[mobile]', fax='$_POST[fax]', email='$_POST[email]', blog='$_POST[blog]', myspace='$_POST[myspace]', site='$_POST[site]', gros='$_POST[gros]', nbr_art='$_POST[nbr_art]', datcrea='$_POST[datcrea]', debcon='$_POST[debcon]', rubrique='$_POST[rubrique]', style='$_POST[style]', desc='$_POST[desc]', bio='$_POST[bio]', news='$_POST[news]', avenir='$_POST[avenir]', objectif='$_POST[objectif]', clip1='$_POST[clip1]', video='$_POST[video]', clip2='$_POST[clip2]', son1='$_POST[son1]', son2=$'_POST[son2]', dateMAJ='$dateMAJ', confirmMAJ='$confirmMAJ  WHERE login='$_SESSION[login]'") or die ('Erreur : '.mysql_error() );


et ca me renvoie

Erreur de syntaxe près de 'desc='essai2', bio='', news='', avenir='', objectif='', clip1=''' à la ligne 1

moi je ne vois pas d'erreur en tout cas je ne la trouve pas
desc bio news avenir et objectif sont des champs texte multiligne

17 réponses

jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
16 janv. 2008 à 17:16
mysql_query("UPDATE log SET nom='$_POST[nom]', prenom='$_POST[prenom]', adresse='$_POST[adresse]', ville='$_POST[ville]', fixe='$_POST[fixe]', mobile='$_POST[mobile]', fax='$_POST[fax]', email='$_POST[email]', blog='$_POST[blog]', myspace='$_POST[myspace]', site='$_POST[site]', gros='$_POST[gros]', nbr_art='$_POST[nbr_art]', datcrea='$_POST[datcrea]', debcon='$_POST[debcon]', rubrique='$_POST[rubrique]', style='$_POST[style]', desc='$_POST[desc]', bio='$_POST[bio]', news='$_POST[news]', avenir='$_POST[avenir]', objectif='$_POST[objectif]', clip1='$_POST[clip1]', video='$_POST[video]', clip2='$_POST[clip2]', son1='$_POST[son1]', son2=$'_POST[son2]', dateMAJ='$dateMAJ', confirmMAJ='$confirmMAJ  WHERE login='$_SESSION[login]'") or die ('Erreur : '.mysql_error() );

p****n j'ai galerer pour les trouver celle la trop le nez dans le guidon...
comme quoi les petites erreurs font les gros mal de tete...
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
17 janv. 2008 à 07:49
Si tu veux éviter ces erreurs, il y a une manière assez simple de le faire: construire autrement tes requêtes, de manière plus lisible (après tu fais ce que tu veux hein).

$query = "UPDATE log SET ";
$query .= "nom='$_POST[nom]', ";
$query .= "prenom='$_POST[prenom]', ";
$query .= "adresse='$_POST[adresse]', ";
$query .= "ville='$_POST[ville]', ";
$query .= "... ";
$query .= "dateMAJ='$dateMAJ', ";
$query .= "confirmMAJ='$confirmMAJ  ";
$query .= "WHERE login='$_SESSION[login]'";
mysql_query($q);

Ainsi, en cas d'erreur, tu sais tout de suite à quelle ligne c'est.

PS: J'éviterais les double quote pour ma part: plutôt 'ville=\''.$_POST[ville].'\', '; que "ville='$_POST[ville]', ";

*****
noisy communication - wherever, be everywhere!
0
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
17 janv. 2008 à 10:28
Salut Malik et merci
ta facon de faire est très bien elle me permet de mieux voir ma requete et par la suite de rajouter des ligne de façon plus intuitive c'est cool

le truc des quotes c'est mieux de faire
$query .' nom".$_POST[nom].", ';
que$query ." nom'.$_POST[nom].',";

c'est pour la rapidité?
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
17 janv. 2008 à 10:32
Attention tu oublies des backslashs!$query .' nom\''.$_POST[nom].'\', ';

Si tu mets des doubles quotes, il y a 2 problèmes:
1) la rapidité car PHP doit vérifier la différences entre les variables et les strings (mais bon, c'est selon moi du détails)
2) la lisibilité dans les requêtes (c'est mon avis): ' et " se mélangent vite :-)

*****
noisy communication - wherever, be everywhere!
0

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

Posez votre question
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
17 janv. 2008 à 10:33
et en principe c'est $_POST['nom']

*****
noisy communication - wherever, be everywhere!
0
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
17 janv. 2008 à 11:17
exact c'est

$query .= 'nom=\''.$_POST['nom'].'\', ';

dis moi j'ai une erreur sur

$query .= 'desc=\''.$_POST['desc'].'\', ';

alors que quand je met
$query .' ` desc<gras>`</gras>\''.$_POST['desc'].'\', ';

ca fonctionne desc est un champ texte multiligne
mais j'ai d'autres champs multiligne et je n'ai pas besoin de mettre les petits `
tu sais d'ou ca vient?
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
17 janv. 2008 à 11:20
à mon avis c'est un problème de traitement de ta chaîne. Fais un echo de query et testes dans phpmyadmin, tu verras rapidement.

*****
noisy communication - wherever, be everywhere!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 janv. 2008 à 19:54
Hello,

tu as des apostrophes dans ta variable. Tu dois protéger les données utilisateurs que tu insères dans ta base. la meilleure fonction pour ça avec mysql étant mysql_real_escape_string().
0
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
18 janv. 2008 à 10:28
salut malalam
en quoi cela pose des problèmes de sécurité?
(juste pour savoir) je vais aller voir real_escape de ce pas!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 janv. 2008 à 13:11
Ce genre de faille est très utilisé dans les injections sql.
0
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
18 janv. 2008 à 16:19
ok merci

donc ca doit donner un truc comme ca :

$desc = mysql_real_escape_string(stripslashes($_POST['desc']));

mais si je retire le ` ca fonctionne pas

$query .= '`desc`=\''.$desc.'\', ';
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 janv. 2008 à 17:31
Ah tu as appelé ta table "desc"? C'est normal : c'est un mot clef réservé, tu n'as pas le droit de l'utiliser. Donc il faut dans ce cas utiliser les délimitateurs `` pour indiquer à mysql de ne pas interpréter ce mot.
ORDER BY champ DESC...c'est à ça que sert ce mot clef.
0
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
18 janv. 2008 à 17:45
ok en fait c un champ de ma table mais c'est pas moi qui ai créer la table je pense que je vais changer le nom desc merci malalam
0
vynck Messages postés 2 Date d'inscription jeudi 4 décembre 2008 Statut Membre Dernière intervention 4 décembre 2008
4 déc. 2008 à 02:05
salut a tous je sais que c pas forcement le bon topic mais voila il me faut de l'aide svp!!!

voila je suis debutant en programmation et j'utilise windev 12 express
j'ai aussi des cours avec des exercice pour pouvoir utiliser windev et savoir comment programmer mais voila en suivant le cour il me demande de creer un petit logiciel pour apprendre a manipuler les codes

suite au premiere manipulation ou tout ce passe niquel arrive les petit soucis!

voila mon probleme:
je cherche a installer un bouton permettant de pouvoir selectionner " madame,Monsieur etc..." vous voyez ce que je veu dire
sauf qu'au moment de coder voila le soucis
il me dit erreur de syntaxe sur le mot  1
et un autre message d'erreur pour les 2 points jene sais plus quoi faire et la je desespere je sais que la reponse et sous mon nez mais je ne la vois pas pourriez vous me donner la solution ??? merci d'avance a vous tous !!!

SELON Civilité
    AUTRE CAS
        CAS 1:
             Choix="Madame"
        CAS 2:
             Choix="Mademoiselle"
        CAS 3:
             Choix="Monsieur"
FIN
0
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
4 déc. 2008 à 09:57
salut

tu peux mettre le code que tu as créer stp
0
vynck Messages postés 2 Date d'inscription jeudi 4 décembre 2008 Statut Membre Dernière intervention 4 décembre 2008
4 déc. 2008 à 22:57
ben c bon merci en fait c'etait juste le probleme que le CAS 1
et symplement une 'chaine' et que je l'avais pas mis le CAs comme tels! par contre pouvez vous me dire
je creer un convertisseur (franc - Euro) et dedant on me demande:

Clic sur ChoixConvert ( choisir entre "convertir de Franc vers Euro ou le contraire)
 - Passer les zones Francs et Euros à 0 j'ai reussi a le faire c pas tres dur double clic sur la zone de replissage et mettre les valeur a zero)
 - Déverrouiller la zone à convertir pour pouvoir saisir dedans (comment debloquer pour pouvoir faire une saisie ??? genre ecrire 10 €  dans la zone de saisie ???)

Clic sur calculer (Bouton calculer)
 - Selon ChoixConvert calculer soit la zone Franc, soit la zone Euro!

j'ai peur de ne pas comprendre ??? ( il me met une erreur de syntaxe sur le mot Calculer)
je ne connais pas le code a rentrer pour pouvoir faire ma ligne de commande
et faire en sorte a se que mes bouton fonctionne exemple: " somme en franc 65f ("=" le signe egale sur mon projet c'est le bouton calculer) donc = 10€
comment definir ma ligne de commande pour que je puisse choisir soit: ( de Franc a Euro ou le contraire ???) car il me met toujour de Euro vers Franc et sa devien lourd a la fin j'y suis depuis cet apres midi!!!

A linitialisation de la zone taux définir le taux par défaut à 6.55957 ( j'ai reussi c'est pas dur  lol)

merci de vos reponses

ludovic
0
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
5 déc. 2008 à 10:57
moi sans le code je peux rien faire mais tu devrais allez sur la partie webdev en haut à droite qui est faite pour ca
0
Rejoignez-nous