Page 1 sur 1

Textarea & Apostrophe

Posté : 08 juin 2015, 10:03
par Dilidim
Bonjour,

Je possède un formulaire dans lequel se trouve un textarea, lorsqu'on remplit ce champ avec une apostrophe j’obtiens une erreur...
Comment puis je résoudre ce souci ?

Merci d'avance !

Re: Textarea & Apostrophe

Posté : 08 juin 2015, 14:02
par ynx
Salut,

Peux tu préciser le message d'erreur ?

Si il s'agit d'un problème d'enregistrement en base de données, tu dois échapper les caractères spéciaux de ta bdd dans tes données avant de les utiliser dans une requête sql. Plusieurs possibilités pour faire cela :
- si tu utilises PDO, tu dois utiliser des requêtes préparées ou la méthode PDO::query()
https://php.net/manual/fr/pdo.prepare.php
https://php.net/manual/fr/pdo.quote.php
- si tu utilises l'API Mysqli, tu dois utiliser mysqli_real_escape_string()
https://php.net/manual/fr/mysqli.real-escape-string.php
- si tu utilises l'API Mysql (obsolète) tu dois utiliser mysql_real_escape_string()
http://php.net/manual/fr/function.mysql ... string.php

Bonne journée

Re: Textarea & Apostrophe

Posté : 08 juin 2015, 14:38
par Dilidim
Il m'affiche ça :
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 '1'' at line 16

Je vais regarder les liens que t'as renseigné !

Re: Textarea & Apostrophe

Posté : 08 juin 2015, 14:44
par LittleFairy
bonjour dilidim,
tes apostrophes sont interprêtées comme du code, il faut encoder ton texte avant de le mettre dans la base :
ajoute addslashes ($texte); au lieu de $texte
pour afficher ensuite le résultat, tu feras stripslashes($ta_requete['texte'];

Mais pour éviter les erreurs, vérifie bien que :
base de donnée en UTF-8
page en UTF-8
incrémentation simple (sans addslashes ou htmlentities),
affichage avec nl2br juste pour les retour chariots. nl2br($texte);

Enjoy !

Re: Textarea & Apostrophe

Posté : 08 juin 2015, 15:17
par ynx
Erreur de syntaxe sql : il s'agit bien d'une erreur liée aux caractères spéciaux de ta bdd.

@LittleFairy : l'utilisation de addslashes() n'est plus recommandée pour l'échappement des caractères spéciaux sql, mieux vaut utiliser les fonctions et/ou méthodes dédiées pour ça ;) (cf. précédent post)