11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Depuis que j'enregistre mon formulaire d'ajout de commentaires avec AJAX, si je saisit dans mon formulaire, je le retrouve en hé dans ma base SQL alors qu'en passant par la méthode "traditionnelle" j'avais hè"

Ne trouvant pas ma réponse dans le forum, je fait une nouvelle fois appel à votre aide pour corriger ce bug et retrouver mes hè.

Merci par avance.
Modifié par Hayreon (02 Nov 2009 - 19:10)
bonsoir,
Dans le traitement du formulaire, utilisez-vous la fonction htmlentities ou htmlspecialchars ?
Modifié par kraddle (02 Nov 2009 - 18:51)
Mes variables sont enregistrées avec htmlentities();

Merci
Modifié par Hayreon (02 Nov 2009 - 18:53)
Problème résolu (?)

Le ? car est ce bien convenable ???

En effet , au lieu d enregistrer $_POST['commentaire'] avec

$chaine = htmlentities($chaine);

je fait

$chaine = htmlentities($chaine, ENT_QUOTES,'UTF-8');

Et la ça ressort nickel.

Si vous avez un avis sur le sujet, je suis preneur !

Merci Smiley smile
avec le UTF-8 vous définissez le jeux de caractères. Votre base de données doit être en utf8

sinon pour info il existe la fonction html_entity_decode qui produit l'inverse de htmlentities.
avec les mêmes paramètres optionnels
Quelques remarques:

1. Quand on dit qu'une base de données est en UTF-8, cela signifie que les contenus stockés sont réellement codés en UTF-8, et à priori qu'ils contiennent des caractères non-ASCII (parce que l'UTF-8 avec uniquement des caractères ASCII... ben c'est de l'ASCII).

2. Ce n'est pas parce que phpMyAdmin écrit des choses comme "utf8_general_ci" que les données sont bien en UTF-8 (tout bêtement, MySQL n'en sait rien si les données que vous avez injecté dans votre base sont en UTF-8 ou pas... il sait juste que lors de la création de la base ou des tables, ces dernières ont été étiquetées «paf, ça c'est de l'UTF-8, et on va trier les caractères selon un ordre dit "general"». Ça n'engage à rien les étiquettes, vous pouvez toujours mettre une étiquette "banane" sur un chou-fleur.

3. Bref, Hayreon, quelque chose me dit que tu n'as pas la moindre idée de si ta base est en UTF-8, en ISO-8859-1, en ASCII, en SHIFT-JIS ou autre. (Truc marrant: de toute manière, la base n'est en rien. Tu peux tout à fait avoir une «colonne» de table en ISO-8859-1, avec dedans deux ou trois «cellules» en UTF-8... voire des données corrompues ou juste invalides dans quelque encodage que ce soit. On met ce qu'on veut dans une base de données, hein, ou presque.)

4. Pour finir, pourquoi utiliser htmlentities() tout court, hum? Je soupçonne que ça ne serve strictement à rien, ou que ce soit une solution pas terrible à un problème mal compris.
Modifié par Florent V. (02 Nov 2009 - 22:52)
Bonsoir,

Je n'utilise pas que htmlentities(), c'est juste une ligne placée dans une fonction qui me permet de sécuriser les données en provenance de formulaires avant insertion dans la base de données Smiley cligne