problème lors d'une recherche en SQL et caractères spéciaux
15 messages
• Page 1 sur 1
- fraid26
- WRInaute discret

- Messages: 139
- Inscription: 3 Oct 2008
problème lors d'une recherche en SQL et caractères spéciaux
Bonjour à tous !
Pour enregistrer mes champs dans ma BDD je les traite avec un htmlentities() de php.
Jusque là tout va bien.
Par contre lorsque je fais une recherche cela me pose problème :
par exemple je cherche les prénoms qui contiennent "ea", ma requête va me retourner tous les prénoms avec un "é" car il est écrit dans la bdd "é" donc contenant "ea"... Auriez vous une idée sur comment je pourrais traiter cela (une fonction sql ?) ??
Merci d'avance !
Frédéric
Pour enregistrer mes champs dans ma BDD je les traite avec un htmlentities() de php.
Jusque là tout va bien.
Par contre lorsque je fais une recherche cela me pose problème :
par exemple je cherche les prénoms qui contiennent "ea", ma requête va me retourner tous les prénoms avec un "é" car il est écrit dans la bdd "é" donc contenant "ea"... Auriez vous une idée sur comment je pourrais traiter cela (une fonction sql ?) ??
Merci d'avance !
Frédéric
- Amauri
- WRInaute discret

- Messages: 221
- Inscription: 7 Avr 2011
Re: problème lors d'une recherche en SQL et caractères spéciaux
Salut,
Non, il n'y a pas de fonction pour faire ça puise que mysql n'a pas de rapport direct avec html.
Pourquoi insérer les champs encodés ?
Une solution serait de décoder l'ensemble des champs dans la bdd. C'est une grosse base ?
Non, il n'y a pas de fonction pour faire ça puise que mysql n'a pas de rapport direct avec html.
Pourquoi insérer les champs encodés ?
Une solution serait de décoder l'ensemble des champs dans la bdd. C'est une grosse base ?
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: problème lors d'une recherche en SQL et caractères spéciaux
fraid26 a écrit:Pour enregistrer mes champs dans ma BDD je les traite avec un htmlentities() de php.
Jusque là tout va bien.
Non, tu as tord.
Il ne faut pas enregistrer les entités HTML en BDD, il faut juste utiliser htmlentities à l'affichage.
Et ton problème ne serait pas là.
- fraid26
- WRInaute discret

- Messages: 139
- Inscription: 3 Oct 2008
Re: problème lors d'une recherche en SQL et caractères spéciaux
OK je vois mieux... je pensais que le htmlentities aider aussi à lutter contre les injections !
du coup je suppose qu'il faut plutôt que j'utilise mysql_real_escape_string ?
Je peux décoder l'ensemble de la base, elle est petite pour le moment. Par contre il me faut recoder l'ensemble de mes pages avec des htmlentities au moment de l'affichage pour le client... et ça, ça fait du boulot !
Merci de votre aide !
du coup je suppose qu'il faut plutôt que j'utilise mysql_real_escape_string ?
Je peux décoder l'ensemble de la base, elle est petite pour le moment. Par contre il me faut recoder l'ensemble de mes pages avec des htmlentities au moment de l'affichage pour le client... et ça, ça fait du boulot !
Merci de votre aide !
- Amauri
- WRInaute discret

- Messages: 221
- Inscription: 7 Avr 2011
Re: problème lors d'une recherche en SQL et caractères spéciaux
Si tu utilises le même charset sur la bdd et sur le site (ce qui devrait être le cas), tu n'as pas besoin d'ajouter des htmlentities à tout va..
mysql_real_escape_string va ajouter des \ devant les ' et ", ça limite les injections mais ça ne fait pas tout
mysql_real_escape_string va ajouter des \ devant les ' et ", ça limite les injections mais ça ne fait pas tout
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: problème lors d'une recherche en SQL et caractères spéciaux
J'utilise htmlentities à l'affichage pour que par exemple le & commercial se transforme bien en &, pas du tout pour éviter un problème de charset.
Pour éviter de devoir mettre toutes les vues à jour, rien n’empêche d'appliquer un htmlentities à tous les champs après la lecture SQL.
Pour éviter de devoir mettre toutes les vues à jour, rien n’empêche d'appliquer un htmlentities à tous les champs après la lecture SQL.
- poulpe
- WRInaute discret

- Messages: 90
- Inscription: 29 Juin 2004
Re: problème lors d'une recherche en SQL et caractères spéciaux
tu dois toujours echapper ce que tu affiches et provient d une base, puisque tu ne sais pas a l avance ce qu il s y touve. On peut bien y glisser du js par exemple, et la c est la catastrophe pour toi.
- poulpe
- WRInaute discret

- Messages: 90
- Inscription: 29 Juin 2004
Re: problème lors d'une recherche en SQL et caractères spéciaux
Je ne dis pas qu il faut pas valider ce qui rentre, mais il faut echapper ce qui sort egalement.
ou alors si je veux poster un commentaire disant '3 < 5' par exemple je peux pas car tu vas interdire le caractere '<'
c est un peu plus developpe ce que j explique:
http://www.lazycat.org/php-output-escaping.html
ou alors si je veux poster un commentaire disant '3 < 5' par exemple je peux pas car tu vas interdire le caractere '<'
c est un peu plus developpe ce que j explique:
http://www.lazycat.org/php-output-escaping.html
- Amauri
- WRInaute discret

- Messages: 221
- Inscription: 7 Avr 2011
Re: problème lors d'une recherche en SQL et caractères spéciaux
Pour afficher 3 < 5 il suffit lors de l'insertion dans la bdd d'inserer 3 < 5 (avec htmlentities). Tous les navigateurs afficheront correctement le symbole.
Je ne comprend pas pourquoi tu dis "par exemple je peux pas car tu vas interdire le caractere '<' " ?
Je ne comprend pas pourquoi tu dis "par exemple je peux pas car tu vas interdire le caractere '<' " ?
- poulpe
- WRInaute discret

- Messages: 90
- Inscription: 29 Juin 2004
Re: problème lors d'une recherche en SQL et caractères spéciaux
donc si tu utilises htmlentites a l insertion du champ du formulaire, tu te retrouves avec le probleme evoque dans le premier post: des accents transformes et une recherche qui marche plus.
-

Leonick - WRInaute accro

- Messages: 19595
- Inscription: 8 Aoû 2004
Re: problème lors d'une recherche en SQL et caractères spéciaux
pas obligé : il suffit de faire un str_replace(array(">","<"),array(">","<"),$content) et le tour est jouépoulpe a écrit:donc si tu utilises htmlentites a l insertion du champ du formulaire, tu te retrouves avec le probleme evoque dans le premier post: des accents transformes et une recherche qui marche plus.
- poulpe
- WRInaute discret

- Messages: 90
- Inscription: 29 Juin 2004
Re: problème lors d'une recherche en SQL et caractères spéciaux
Salut.
c est sur ca marche, mais si un jour par exemple tu veux exporter ta base dans un excel ou autre format qui ne comprend pas les entites html, ben tu vas devoir modifier encore une fois tout ton fichier. A mon sens il est plus simple de garder le contenu original, et le modifier a la volee.
c est sur ca marche, mais si un jour par exemple tu veux exporter ta base dans un excel ou autre format qui ne comprend pas les entites html, ben tu vas devoir modifier encore une fois tout ton fichier. A mon sens il est plus simple de garder le contenu original, et le modifier a la volee.
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Google recherche personnalisée et caractères spéciaux
- Problème de caractères spéciaux
- Problème avec les caracteres spéciaux
- Simplepie problème caractères spéciaux rss iso
- Gmail - Imap : Problème encodage caractères spéciaux
- [URL Rewrite] Problème avec les caractères spéciaux.
- Caractères spéciaux: é ê è
- Caractères spéciaux : é, è, ô, â....
- Caractères spéciaux
- Caractères spéciaux et référencement
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
