8791 sujets

Développement web côté serveur, CMS

Bien le bonjour,
Me voila embêté d'une force... Mes champs ont les bons noms, je vois pas où peut être mon erreur...
Le pire c'est que ma requête fonctionnait puis j'ai du la modifier, puis la remettre comme d'origine, etc... et au finale ca merdouille :

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 '' at line 1


L'ensemble de mes variables passent bien dans ma requête sql.
Voila la requête :

$sql = "UPDATE sections_pec SET nom='".nl2br(htmlentities($_POST['nom']))."', description='".nl2br(htmlentities($_POST['description']))."', contact='".nl2br(htmlentities($_POST['contact']))."',site='".nl2br(htmlentities($_POST['site']))."', entrainement='".nl2br(htmlentities($_POST['entrainement']))."', licence='".nl2br(htmlentities($_POST['licence']))."',palmares= '".nl2br(htmlentities($_POST['palmares']))."' where club= '".$_POST['club']."'" or die('Erreur SQL !'.$sql.'<br />'.mysql_error());


Je vois pas ou est mon erreur ...
Help ! Smiley bawling
Bonjour,

Fais un echo de ta requête et tente de la mettre directement dans phpmyadmin, tu devrais pouvoir trouver ton erreur rapidement !
Merci pour l'astuce.
En fait j'ai trouvé mon problème mais ppfff...

En gros j'ai un formulaire de modifications d'informations.
Dans les champs s'affichent les valeurs enregistrées dans la base sql.
Les personnes n'ont donc qu'à modifier le texte qu'elles ont écrit à l'époque.

Le problème vient que je doit prendre en compte les sauts de lignes et autres.

Donc le traitement de ma chaine de caractères est le pb...
J'utilise un echo nl2br($valeur) pour afficher le texte de ma base sql dans mes texte area.

Puis je fais un update avec mysql_real_escape_string(nl2br(htmlentities($valeur))).

Je pensais que de la sorte je pouvais récupérer le texte, sa mise en forme et échapper tout ce qu'il faut pour sur l'affichage un simple echo $valeur suffise.

Donc je lutte, par moment certains caractères s'échappent pas et plantent ma requête...
Mais pas de solution pour le moment...
Salut,

je suis pas sur que le nl2br() soit utile pour afficher à l'intérieur d'un textarea.

Perso je stocke en base de données les sauts de ligne (les fameux "\n" ou "\r\n") sans les modifier, pour de l'affichage texte j'utilise nl2br() et pour de l'affichage en textarea je ne change rien. et ça fonctionne très bien. (A moins de stocker des morceaux complets de HTML en base de données, je n'aime pas vraiment stocker du texte simple parsemé de quelques <br/> et &eacute; au milieu, mais

Pour les caractères à échapper, vérifie que les magic quotes sont désactivés dans le php.ini


PS : faudrait que tu publies ici les echo de ta requête d'insertion.
Modifié par niahoo (19 Jul 2010 - 16:15)
Oui peut etre que cela ne change pas grand chose dans un text area, je ne sais plus, tellement ca fait un moment que je modifie le code.
Mon principal problème vient de l'ensemble des caractères spéciaux qui de temps en temps font planter ma requête sql avec une erreur de syntaxe line 1 aléatoire, la dernière vient d'un enchainement apostrophe / majuscules du style l'ENDM.
Modifié par morhead (19 Jul 2010 - 17:14)
Ok,

bon ben faut que tu fasses un écho de ta requête avant l'INSERT, histoire que quand ça plante tu puisses déjà la lire et si affinités avec elle, la poster ici Smiley biggrin . Ce n'est peut-être pas si aléatoire que ça en à l'air.

Mais est-il arrivé que "l'ENDM." ne génère pas d'erreur ?
Bon je viens de tester avec ce texte : é"'&)_)ç-'éè)à klgh,fgmh,gfh REZGVB'fGFDGDFGghbgfbh
Et ca passe maintenant... Tout passe...

Par contre j'ai des <br /> qui apparaissent dans mes text area et dans ma base.... et donc qui sont affichés sur le site....
*se tire les cheveux...*
si tu as des <br/> affichés sur le site, ça veut dire logiquement qu'un '<br/>' était stocké dans ta base et que tu l'as passé par HTMLentities().

D'où l'intérêt, bien que légèrement hors-sujet, de ma première réponse.

* se la pète *

C'est la même raison que pour les br dans le textarea.
du coup avant d'écrire dans le textarea, tu dois maintenant passer par cette super function !!

function br2nl ( $string ) {
    return str_ireplace( '<br/>' , "\n" , $string );
}


Mais encore une fois, oui, tu finiras chauve à stocker des '<br/>' dans la DB. Surtout si un jour tu veux faire une sortie console, PDF, CSV, ou que sais-je.



Allez j'insiste encore un coup pour être sûr d'être bien relou Smiley langue

textarea        » securité + \' » base de données
base de données » textarea
base de données » nl2br         » <p>, <a>, etc..

Modifié par niahoo (19 Jul 2010 - 18:19)
Merci pour ton aide Smiley smile

Je suis un chef de projet de formation qui se retrouve dev web, donc j'ai quelques lacunes ....
see you soon xD