Erreur de syntaxe près de [Résolu]

Signaler
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
-
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
-
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

Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
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...
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
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!
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
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é?
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
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!
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
et en principe c'est $_POST['nom']

*****
noisy communication - wherever, be everywhere!
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
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?
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
à 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!
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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().
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
salut malalam
en quoi cela pose des problèmes de sécurité?
(juste pour savoir) je vais aller voir real_escape de ce pas!
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Ce genre de faille est très utilisé dans les injections sql.
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
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.'\', ';
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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.
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
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
Messages postés
2
Date d'inscription
jeudi 4 décembre 2008
Statut
Membre
Dernière intervention
4 décembre 2008

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
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
salut

tu peux mettre le code que tu as créer stp
Messages postés
2
Date d'inscription
jeudi 4 décembre 2008
Statut
Membre
Dernière intervention
4 décembre 2008

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
Messages postés
253
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
5 décembre 2008
1
moi sans le code je peux rien faire mais tu devrais allez sur la partie webdev en haut à droite qui est faite pour ca