Désactiver sensibilité à la casse

Résolu
jiantox Messages postés 1159 Statut Membre -  
Autumn`Tears Messages postés 1247 Statut Membre -
Bonjour,

voila je récupere une chaine via un input text et je l'utilise pour faire une recherche sql.

Hors dans le sql il y a des majuscules ou non et le php est sensible à la casse du coup si je tapes d alors que je recherche un D ceci ne fonctionne pas

et

j'ai essayé la fonction strtolower mais le probleme s'inverse, je tapes D alors que je recherche un d il ne trouve plus rien :/

comment faire pour que TOUT passe ?

merci d'avance

4 réponses

  1. Autumn`Tears Messages postés 1247 Statut Membre 145
     
    Salut,

    Ta recherche se fait au niveau de SQL donc, et non pas de PHP ?
    Fais ton strtolower côté PHP, et un LOWER côté SQL : SELECT LOWER(colonne)...
    0
  2. jiantox Messages postés 1159 Statut Membre 115
     
    salut et merci de ta réponse

    maintenant ceci ne me ressort plus que des résultats en minuscule ( si je met un D il ne renvoi rien )
    0
    1. Autumn`Tears Messages postés 1247 Statut Membre 145
       
      Est-ce que tu peux tester depuis ton gestionnaire SQL, ou éventuellement montrer ta requête ?
      0
  3. jiantox Messages postés 1159 Statut Membre 115
     
    alors je précise :

    c'est un moteur de recherche en ajax, les resultats sont donc des suggestions de pseudos selon les caracteres entrés :

    // $_GET['w'] est le mot clef entré

    $nb = strlen($_GET['w']); // nombre de caracteres du mot clef pour la recherche
    $chk=$bdd->query("SELECT pseudo FROM users ");
    while($ck=$chk->fetch()) {
    $rech = substr($ck[0],0,$nb); // recupération du meme nombre de caractere
    $rech = strtolower($rech); // le test \o/
    if ($rech == $_GET['w']) { echo $ck[0].'<br/>'; } // si recherche trouvée
    }

    la dans le cas d trouve le D mais D ne trouve pas le D ( il y a un D dans ma base )
    0
    1. jiantox Messages postés 1159 Statut Membre 115
       
      EDIT : si je le met le LOWER(pseudo) c'est tout l'inverse d trouve le d mais D ne trouve pas le d
      0
    2. Autumn`Tears Messages postés 1247 Statut Membre 145
       
      Essaie avec strotolower($_GET['w']). Ceci dit ça me paraît tout de même bizarre qu'ici il se préoccupe de la casse...
      0
  4. jiantox Messages postés 1159 Statut Membre 115
     
    Yep sa roule avec le strtolower sur le $_GET['w'].

    Par contre j'viens de remarqué qu'il est difficile comme ça partout :( j'ai encore du taff lol

    ( et oui si d != D alors tout le monde s'apel pareil :( )

    Merci beaucoup :)
    0
    1. jiantox Messages postés 1159 Statut Membre 115
       
      et du coup est-ce qu'il y a un moyen d'annuler le LOWER du sql ? ( question de présentation mon résultat s'affiche en minuscule et j'aurais aimé le metre normalement quoi )
      0
    2. Autumn`Tears Messages postés 1247 Statut Membre 145
       
      Tu devrais pouvoir enlever le $rech = strotolower($rech) et faire :
      if (strotolower($rech) == strtolower($_GET['w']))
      0
    3. jiantox Messages postés 1159 Statut Membre 115
       
      sa roule, jte remerci :)
      0
    4. Autumn`Tears Messages postés 1247 Statut Membre 145
       
      You're welcome !
      0