begin process at 2012 05 31 12:22:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Probleme de case dans un moteur de recherche.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme de case dans un moteur de recherche.

lundi 14 avril 2008 à 16:49:30 | Probleme de case dans un moteur de recherche.

Gizmalin

Bonjour .
Apres quelques recherche non fructueuse sur le forum ,j'ai decidé de demander .( bon apres si j'ai raté la reponse dans le forum excusez moi en ;) )
Je suis en train de faire un moteur de recherche pour un site  ( recherche simple ) juste des mots cléfs dans different champs, mais comme beaucoup (impression ) je galere avec la Case.

Alors un peu de code ;)

if(!empty ($_POST['txt_search'])){
//verification de la base
$search=$_POST['txt_search'];

// On selectionne les enregistrements contenant le mot clé
// dans les keywords ou le titre
    $query = "SELECT *
FROM `publish`
WHERE `categorie`='".$cate."' AND `title` LIKE '%$search%'
OR `categorie`='".$cate."' AND `keywords` LIKE '%$search%'
OR `categorie`='".$cate."' AND `comment` LIKE '%$search%'";
    $result = mysql_query($query);
    $row = mysql_num_rows($result);
    $Nombre = $row;

// Si aucun enregistrement n'est retourné,
// on affiche un message adéquat
if ($Nombre == "0") {
    echo ("<div class='titre' >Aucun résultat ne correspond à votre recherche</div>" );

}else {
    $query = "SELECT *
FROM `publish`
WHERE `categorie`='".$cate."' AND `title` LIKE '%$search%'
OR `categorie`='".$cate."' AND `keywords` LIKE '%$search%'
OR `categorie`='".$cate."' AND `comment` LIKE '%$search%'";
    $result = mysql_query($query);
    $row = mysql_num_rows($result);
    $Nombre = $row;

    // Si un seul enregistrement est trouvé, on affiche un message au singulier
    if ($Nombre == "1") {
    echo ("<p class='titre' >Un article trouvé</p></br>");
   
    // Dans le cas contraire le message est au pluriel...
    }else {
    echo ("<p class='titre' >Résultat: $Nombre articles trouvés</p></br></br>");
    };
..................

Voila donc le probleme est donc le suivant arrivé a ce que si l'utilisateur recherche  :"article" qu'il trouve dans la base autant les mots "Article" que "article".

En vous remerciant tous d'avance.
Cordialement un NB dans le besoin ;)
lundi 14 avril 2008 à 18:32:44 | Re : Probleme de case dans un moteur de recherche.

Axe971

Salut,

Il me semble que MYSQL gère la casse. M'enfin si ça ne fonctionne pas utilise les fonctions strtolower de PHP et LOWER de MYSQL.
En gros dans ta requête tu utilises LOWER pour chaque champ et en PHP tu utilises strtolower pour chaque variable.

Bonne chance,
lundi 14 avril 2008 à 19:04:19 | Re : Probleme de case dans un moteur de recherche.

neigedhiver

Salut,

Les champs de  type TEXT ne sont pas sensibles à la casse, contrairement aux champs de type BLOB.
Lire la doc pour plus de détails : http://dev.mysql.com/doc/refman/5.0/fr/blob.html

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
lundi 14 avril 2008 à 22:46:51 | Re : Probleme de case dans un moteur de recherche.

yoman64

Membre Club
Hello,

Moi je te fait juste quelques remarques sur ton code au passage.

    $row = mysql_num_rows($result);
    $Nombre = $row;

// Si aucun enregistrement n'est retourné,
// on affiche un message adéquat
if ($Nombre == "0") {


Euh non pourquoi réassigner deux fois la valeur de numrows ? En passant il retourne un ENTIER par une chaine alors pourquoi == "0"

psst: if (($Nombre = mysql_num_rows($result)) === 0) {

Aussi échape ta valeur, parce que la l'injection est possible (enfin pourquoi personne y pense jamais ). Sinon un champ text ou varchar est insensible à la casse, a moin que tu compare avec LIKE BINARY

Je te laisse un deuxième lien de doc qui parle exactement de ton problème : http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
mardi 15 avril 2008 à 14:54:16 | Re : Probleme de case dans un moteur de recherche.

Gizmalin

Je vous remercie tous , je vais me re-pencher sur le probleme a la lumiere de ces nouvelles informations.

heureusement que vous etes la quand meme ;)
mardi 15 avril 2008 à 15:25:09 | Re : Probleme de case dans un moteur de recherche.

neigedhiver

Jette aussi un oeil à la réponse de Malalam dans ce sujet : http://www.phpcs.com/infomsg_SENSIBILITE-CASSE_1112375.aspx


Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
mardi 15 avril 2008 à 15:26:58 | Re : Probleme de case dans un moteur de recherche.

Gizmalin

Bon je n'arrive pas a edité mon post precedent , donc je vais le doublé pour dire encor une fois merci a tout le monde et donné la solution de tout ce mik mak .

j'ai raisolu le probleme qui etait tout simplement l'interclassement de ma table    utf8_bin qui comme son nom l'indique (ou pas  ) est binaire et donc sensible a la case meme sur des champs de type texte ;) c est Yoman 64 qui ma mis sur la voie avec le compare LIKE BINARY Donc  voila maintenant sa marche comme ca devrais .

A bientot tout le monde encor merci probleme resolue ;)


Cette discussion est classée dans : recherche, query, search, categorie, cate


Répondre à ce message

Sujets en rapport avec ce message

comment faire un recherche dans une base mysql [ par boulanger ] merci adrien pour le coup de main mais ca ne m affiche rien en resultat de recherche pouvez vous voir ce qui cloche dans le codebase en mysql et code Recherche et affichage plusieur page [ par PETITDAVID ] Bonjour a tousVoila je viens chercher un peu d'aide, car je suis debutant et apres avoir fouille le site et le forum j'arrive toujours pas a me depato REcherche dans base [ par masseur ] Salut.J'essaye de recherche un nom spécial dans une base afin de le récupérer et de l'afficherVoici la page de mon formulaire<input type="text" name=" Recherche Dans Une Tres Grosse BDD [ par ekinoks ] Bonjour et bonne année a tout le monde.J'ai fait une fonction recher qui va recherché les ligne demendé dans une TRES GROSSE (+ de 10000 enregistremen Requete moteur de recherche [ par vince1415 ] Salut, Voila en fait j'ai un petit probléme avec ma requéte pour un moteur de recherche tout simple. Voici le code:     function Search ($search, &$_ recherche d'enregistrement [ par duodiscus ] bonsoir,alors voilà, j'ai une base de donnée qui contient des produitset j'ai une page de modification de produiten entête de cette page, j'ai une sor $QUERY_STRING afficher en différé sur mon site [ par pyranhaz ] Existe-il un moyen d'avoir LE RÉSULTAT de la recherche sur un moteur de recherche quelconque par mes visiteurs en différé sur une page que je choisi s moteur de recherche fulltext avec easyphp [ par samt01 ] Voilà, je fais une requête avec l'option match mais il y a certains mots qu'elle ne trouve pas comme : "eos" par exemple alors que le mot eos existe d Besoin d'aide pour optimisation code [ par lineb76 ] Bonjour,Je me tourne vers vous car je suis completement perdu avec mon code et j'aurais besoin d'aide pour l'optimiser. il est tres tres lent et tres mon moteur recherche web : création de page d'idexation [ par astuces_jeux ] Bonjour,j'ai fait une page de résultats et j'ai peut-etre des erreurset j'aimerai décider qu'il y ai 15 réponses par pages et faires plusieurs page !!


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales