8791 sujets

Développement web côté serveur, CMS

bonjour à tous,

j'ai un souci avec le signe %
j'ai un formulaire avec un textarea. Quand j'envoie le contenu du textarea dans ma BDDsql le signe % disparait et supprime l'espace et le caractere qui suit.
exemple si je tape dans mon formulaire :

c'est 100% pratique !
dans ma BDD ça enregistre
c'est 100ratique !

Le probleme vient-il du codage (UTF-8) de mon formulaire et de ma BDD (utf8_unicode_ci) ?
J'avais déjà eu le souci avec de é à ê mais je solutionné avec
mysql_query("SET NAMES 'utf8'");

Comment faire pour avoir les % correctement ?

Merci d'avance
Le caractère % est un caractère réservé en SQL.
Essais de faire passer ta chaine dans la fonction mysql-real-escape-string avant de l'enregistrer en base de donnée.

Au passage, on le répète assez souvent mais il est primordiale d'utiliser cette fonction pour traiter toutes les données venant d'un utilisateur avant de les utiliser dans une requête SQL afin de protéger sa requête contre les attaques par injection SQL. Smiley cligne
bonjour, merci du conseil, mais pour mon champ ça ne marche pas non plus il n'accepte pas les %....
Smiley decu
dans mon textarea quand je mets
100% gratuit
dans ma base de données sql ça prend
100ratuit

le champ de ma table se nomme description et le codage est latin1_swedish_ci
ma page où se trouve le formulaire contient :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

et j'utilise
mysql_query("SET NAMES 'utf8'"); 
pour ma requete sql

y'a t-il un rapport ?

merci
Modifié par pareto (07 May 2010 - 15:28)
Non, aucun. L'encodage est la manière dont sont codés les caractères. Le problème en fait vient du fait que, contrairement à ce qu'a dit moust, la fonction mysql_real_escape_string n'échappe pas les caractères % et _. De mémoire, il me semble que pour mettre un caractère "%", il faut insérer %% dans la base de données : le premier étant le caractère spécial MySQL, et le deuxième, l'option du premier.
Modifié par phpdoesnotcare (07 May 2010 - 15:45)