Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1780 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL/PHP] Précision du Like '%valeur%' ??

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL/PHP] Précision du Like '%valeur%' ??

n°2023082
Odissine
Posté le 15-09-2010 à 14:49:24  profilanswer
 

Bonjour,  
 
Voilà je suis confronté au problème suivant ... j'effectue une recherche dans une base de donnée SQL ...  
Ma recherche est du style :  
 
$query = "SELECT * FROM image WHERE mots LIKE '%$mots_search%'";
 
Valeur des données de ma base pour exemple :  
 
Panneau
Eau
Bouleau
Eaux
...
 
Ce que je souhaiterais serait de saisir une valeur dans un champ (ex: eau) et que le résultat ne retourne que les deux Eau et Eaux ... mais pas Panneau ni Bouleau ...
 
En clair quand je mets %% ca me retourne toutes les occurrences contenant "eau", et quand je mets = au lieu de LIKE sans les %% ca ne me retourne que Eau ... mais pas le Eaux ...  
 
Je penses que cela est faisable mais heu ... comment ;)
 
Merci pour votre aide !
 
Cordialement


Message édité par Odissine le 20-10-2010 à 11:58:34
mood
Publicité
Posté le 15-09-2010 à 14:49:24  profilanswer
 

n°2023083
jeff@be
Posté le 15-09-2010 à 14:55:17  profilanswer
 

ben...

Code :
  1. $query = "SELECT * FROM image WHERE mots LIKE '$mots_search%'"


 
ou alors j'ai pas compris la question...

n°2023090
rufo
Pas me confondre avec Lycos!
Posté le 15-09-2010 à 15:17:28  profilanswer
 

Tu peux même limiter un peu plus éventuellement en faisant ça :

Code :
  1. $SearchSize = strlen($mots_search);
  2. $query = "SELECT * FROM image WHERE mots LIKE '$mots_search%' and CHAR_LENGTH(mots) BETWEEN $SearchSize AND ".($SearchSize + 2);


le 2, c'est la tolérance : tu peux mettre 1, 2, 3 voire plus.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2023092
olivthill
Posté le 15-09-2010 à 15:21:20  profilanswer
 

Citation :

une base de donnée SQL

SQL server ? ou SQL comme utilisant le langage SQL, et dans ce cas, Oracle ? MySQL ? Access ? autre ?
Il existe peut-être soundex ou quelque chose d'approchant comme similar_text ou levenshtein.
En tous cas, cela existe en PHP, voir http://php.net/manual/fr/function.soundex.php

n°2023098
flo850
moi je
Posté le 15-09-2010 à 15:56:31  profilanswer
 

ou utiliser une vrai couche de moteur de recherche comme sphinx , ou un moteur de recherche externe comme lucene/solr
ce que tu cherches a faire ( travailler sur la racine des mots ) s'appelle le steming , il  me semble


Message édité par flo850 le 15-09-2010 à 15:56:56
n°2023099
rufo
Pas me confondre avec Lycos!
Posté le 15-09-2010 à 16:02:38  profilanswer
 

Le steming, ça marche pas trop mal pour l'anglais, j'avais trouvé une adaptation GPL pour le français, mais franchement, ça marche pas terrible :/ Mieux vaut utiliser une BD linguistique, comme Lexique.org (la v3) qui est en GPL :) Pour chaque mot du français, t'as pleins d'infos (stats d'utilisations dans les livres ou films, fonction grammaticale, phonétique, découpage en syllabes, son lemme...).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2030812
Odissine
Posté le 20-10-2010 à 11:18:33  profilanswer
 

Tout d'abord merci pour tout ... Je pensais avoir répondu en vous remerciant mais j'ai du oublier :( ...
Bref ...  
Tout aussi curieux que cela puisse paraitre, le fati d'avoir mis LIKE '$variable%' ... a fonctionner pendant un temps ... puis la plus rien :(  
Voilà ma requête :

Code :
  1. SELECT * FROM table WHERE ref <> '' AND (mots LIKE 'eau%' OR titre LIKE 'eau%' OR legende LIKE 'eau%' OR ref LIKE 'eau%') ORDER BY date DESC


cela ne renvoi plus de résultat ...
J'ai changé titre LIKE '%eau%' ... en laissant les autres tel quel ... et la ca marche ...
 
Donc en clair j'ai toujours ce problème de requete sur un mots précis comme "eau" mais ma requête MySQL/PHP me renvoi ou TOUS les résultats "panneau", "eau", "rouleau", "eaux"... alors que je ne souhaite avoir que "eau" et "eaux" ... Bref c'est l'horreur ...
J'ai tout essayé :(
 
Le plus bizzare ... c'est que même sous phpMyAdmin ...  
Faire une requete comme  : SELECT * FROM image WHERE mots LIKE '%usa%' renvoi 6 résultats ... alors que WHERE mots LIKE 'usa%' renvoi 0 résultat !!!
Pourtant dans le champ "mots" ... j'ai bien le mot usa seul et la chaine usa ... (usa prohibition / Remusa)
Voilà comment je faisais avant :

Code :
  1. $mots_search = explode(" ", $_GET['mots']); //séparation des mots de tous les espaces
  2. $nombre_mots = count($mots_search); //nombre de mots
  3. for ($i=0;$i<$nombre_mots;$i++)
  4. {
  5.  $query_mots = "AND (mots LIKE '$mots_search[$i]%' ";
  6.  $query_mots .= "OR titre LIKE '$mots_search[$i]%' ";
  7.  $query_mots .= "OR legende LIKE '$mots_search[$i]%' ";
  8.  $query_mots .= "OR ref LIKE '$mots_search[$i]%'";
  9.  $query_mots .= " ) ";
  10. }


 
Merci pour votre aide ;)


Message édité par Odissine le 20-10-2010 à 14:11:06
n°2030908
Odissine
Posté le 20-10-2010 à 14:53:14  profilanswer
 

J'ai trouvé grâce à ce site ;)
 
http://www.tech-recipes.com/rx/484 [...] tatements/
 
Désolé et merci encore


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL/PHP] Précision du Like '%valeur%' ??

 

Sujets relatifs
Recherche une idée sur la programation d'un site php simple (help) urg[emploi] Recherche développeur PHP/HTML/JS disponible immédiatement
[Recherche] Algorithme de cryptage asymétriqueMoteur de recherche php pour joomla "fait maison" ?
recherche avec php gans une baseRecherche d'un benevole
Macro de recherche dans differents fichiers[ACCESS] Comment faire une recherche précise sur une date?
recherche un script pour une bare de defilement bien precise ...[Java] Je recherche une applet precise...
Plus de sujets relatifs à : [MySQL/PHP] Précision du Like '%valeur%' ??


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR