Problème accent dans requete sql

Problème accent dans requete sql - PHP - Programmation

Marsh Posté le 07-07-2006 à 09:40:41    

Bonjour,
En ce moment , j'ai un problème avec les accent :
Je fais une requete de recherche à partir d'une liste complétée par la base de données
Cette liste s'appelle "souscat". Dans cette liste, j'ai des chaines de caractères avec des accents (Café & Bar , Plâtrier ...). Donc je récupère la chaine de caractère sélectionnée dans la liste pour ma requete et la requete ne renvoit rien ! Et ca , uniquement lorsque il ya un accent.
J'ai donc décidé de supprimer tous les accents de ma table où je fais la recherche et aussi les accents de la chaine de caractère de ma liste , mais sans que ceux-ci disparaissent dans la liste . Par exemple :
 

Code :
  1. <?php //Le système de Recherche
  2. function sans_accent($chaine)
  3. {
  4.    $accent  ="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
  5.    $noaccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby";
  6.    return strtr(trim($chaine),$accent,$noaccent);
  7. }
  8. if (isset($_REQUEST['souscat']))
  9. {
  10. if ($_REQUEST['action1']=="toute" )
  11. {
  12. $sous=sans_accent($_REQUEST['souscat']);
  13. $liendb=mysql_connect($bddserver,$bddlogin,$bddpassword);
  14. mysql_select_db ($bdd);
  15.            $sql = "SELECT * FROM table1
  16.          
  17.                    WHERE  domaine LIKE '%" . $_REQUEST['cat'] .
  18.            "%'
  19.                    AND activite LIKE '%" . $sous .
  20.            "%'
  21.          ORDER BY ville,nom";
  22. }


Mais la , c'est la meme chose : elle ne renvoit rien ! Pourtant si je prend l'exemple de "café & bar", j'ai "cafe & bar" dans ma table1 et j'ai "café & bar" dans ma liste. Ensuite, j'utilise, juste avant la requete, la fonction sans_accent donc logiquement je devrai avoir "cafe & bar" dans ma variable $sous .
Donc voila , j'aimerai bien savoir où ai-je fait mon erreur
 
Merci


Message édité par bluguludu le 07-07-2006 à 10:23:12
Reply

Marsh Posté le 07-07-2006 à 09:40:41   

Reply

Marsh Posté le 07-07-2006 à 09:45:27    

rassure moi, y'a bien un moment ou tu l'executes ta requete???
 
Mais bon pour résoudre ton problème tu aurais du tout passer en utf-8 ( ta base, tes scripts, tes pages html)...


Message édité par anapajari le 07-07-2006 à 09:46:18
Reply

Marsh Posté le 07-07-2006 à 09:47:46    

Si tu affiches ta requête finale ca donne quoi ?
 
PS: les balises code sont tes amies !!

Reply

Marsh Posté le 07-07-2006 à 09:50:43    

Oui oui je te rassure , je l'execute bien ! En fait ca marche nickel lorsque que c'est une chaine de caractère sans accent , là ma requete finale affiche un résultat ! C'est juste un problème d'accent !

Reply

Marsh Posté le 07-07-2006 à 09:58:45    

bluguludu a écrit :

Oui oui je te rassure , je l'execute bien ! En fait ca marche nickel lorsque que c'est une chaine de caractère sans accent , là ma requete finale affiche un résultat ! C'est juste un problème d'accent !


 
Quand tu as des accents dans ta requete originale, que donne ta requete finale ?
 
1 - Les accents sont bien convertis en caractères normaux et tu obtiens une requête correcte
2 - Il manque des caractères parci parla
3 - Ca n'affiche pas grand chose
4 - Obiwan Kenobi

Reply

Marsh Posté le 07-07-2006 à 10:12:45    

Bah je te donne un peu la structure de ma table 1
 
Champ :  id      activite           nom               domaine       ville
 
exemple : 1      cafe & bar   bar de lunion           4          beaufort
 
donc je fais la recherche avec comme critère "activite" et ensuite moi j'affiche le champ "nom"
Pour en revenir à ta question , lorsque quil ya un accent et que je fais afficher la requete $sql , il n'affiche rien !

Reply

Marsh Posté le 07-07-2006 à 10:24:25    

J'ai testé ta fonction sans_accent qui a l'air de bien fonctionner.
 
Si quand tu affiches la requête (pas le résultat !!) rien ne s'affiche c'est qu'il ya un souci dans ton code php.
 
Si tu affiches la requête qu'elle semble correcte mais quand tu l'exécutes ça ne retourne rien alors c'est la requête qui est fausse.
 
PS: pourquoi ne pas faire une table activité ?  
 
PS2: si tes domaines sont exprimés en integer (comme dans ton exemple) ca ne sert à rien de faire un like mais un = tout con suffira.
 
Enfin bon là je suis à court d'idées avec les infos que tu as donné

Reply

Marsh Posté le 10-07-2006 à 14:32:26    

Essaie dans ta requete sql de faire:
 
 
 
18.            $sql = "SELECT * FROM table1
19.            
20.                    WHERE  domaine LIKE '%' . $_REQUEST['cat'] .
21.            '%'
22.                    AND activite LIKE '%' . $sous .
23.            '%'
24.                       ORDER BY ville,nom";
 
En fait g remplacé les " près du % par des ' , n'oublie pas que si tu les melanges, la requete sql risque d'etre   confuse.
Tiens moi au courant........

Reply

Marsh Posté le 11-07-2006 à 15:48:17    

aidara a écrit :

Essaie dans ta requete sql de faire:
 
 
 
18.            $sql = "SELECT * FROM table1
19.            
20.                    WHERE  domaine LIKE '%" . $_REQUEST['cat'] .
21.            "%'
22.                    AND activite LIKE '%" . $sous .
23.            "%'
24.                       ORDER BY ville,nom";
 
En fait g remplacé les " près du % par des ' , n'oublie pas que si tu les melanges, la requete sql risque d'etre   confuse.
Tiens moi au courant........


Correction  [:aloy]


Message édité par Berceker United le 11-07-2006 à 15:48:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed