Neoboot Posté 17 Octobre 2003 Posté 17 Octobre 2003 Salut tout le monde, Si on recherche l'occurence d'un mot dans une base de donnée la solution la plus simple serait : $req = "SELECT * FROM table WHERE col1 LIKE '%$mot%'"; donc si $mot = test les résultats qui serait extraite serai dans le genre : test tests testament ... Et pour chercher un mot unique ?
Anonymus Posté 17 Octobre 2003 Posté 17 Octobre 2003 le % est un joker. Pour trouver le mot test, il faut mettre LIKE '$mot'"; Mais assures toi de la casse : majuscules/minuscules. Mais si tu cherches le mot juste, tu peux aussi te servir du signe = SELECT * FROM table WHERE col1 = '$mot' Anonymus.
Neoboot Posté 17 Octobre 2003 Auteur Posté 17 Octobre 2003 Bah lol, doit y avoir un phantome alors, car j'ai utilisez deja ta solution et je n'est eu aucun resultat ou alors il me dit que la colonne WEB n'existe pas ( si je fait une recherche sur WEB ). Pourtant la casse est respsecter... Comprend plus rien la....
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 J'ai suivi tes consignes et est refait le code sans les fonctions $lk = mysql_connect($db_server,$db_user_login,$db_user_pass) or die("Impossible de se connecter"); $sql = mysql_db_query($db_name,"SELECT * FROM neo_sites WHERE description like '$search'",$lk) or die("Imosssible d'effectuer le query"); echo "<br>lk =".$lk; echo "<br>sql =".$sql; echo "<br>debut du while<br>"; while($site = mysql_fetch_array($sql)) { echo "".$site["description"]."<br><br>"; } echo "<br>fin du while";mysql_close($lk); et en résultat pour le mot "web" j'ai lk =Resource id #4sql =Resource id #5debut du whilefin du while La recherche est effectuer sur des colonnes de type BLOB et j'ai essayer sur ovh...
Cariboo Posté 18 Octobre 2003 Posté 18 Octobre 2003 Hmm, il faut peut-être vérifier si ton résultat n'est pas "normal" la requête SELECT ... WHERE description like 'web' ne renvoie d'enregistrement que si ta colonne description contient "WEB" ou "web". Mais pas si elle contient "webmaster" ou "WEB "... essaie donc aussi SELECT ... WHERE TRIM(description) like 'web'
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 Toujours le même résultat, c'est incompréhensible....
Guest exabs Posté 18 Octobre 2003 Posté 18 Octobre 2003 Attention, WHERE col='web' et WHERE col LIKE '%web%' sont très différent. Le premier ne donnera un résultat que si web est l'unique mot de la colonne col alors que le second code donnera un résultat dès que le mot web sera présent dans une expression contenant le mot web dans la colonne col. Que cherche-tu exactement ? Le mot web seul ou le mot web dans une phrase ? Je vais regarder ton mail dès que possible.
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 (modifié) enfaite je voudrais trouver 'web' dans la colonne col qui correspondrait par exemple a : le web insolite.... Modifié 18 Octobre 2003 par Neoboot
Guest exabs Posté 18 Octobre 2003 Posté 18 Octobre 2003 mon mail ? Non je confonds avec smile Il faut que tu utilises LIKE pour trouver un mot dans une phrase... Mais le problème comme tu le soulignes dans ton premier post c'est que %web% va faire resortir également les mots contenant web (webmaster par exemple). Une solution pourrait être de chercher % web % mais dans ce cas tu ne trouveras pas web en début ou en fin de phrase, ni "web.", "web,", "web!", etc.. Je n'ai personnellement pas trouvé de solution pour réellement trouver un mot dans une phrase...
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 MERCI MERCI MERCI MERCI au moins j'ai plus besoin d'essayer trente mille combinaison de syntaxe... et vais partir dans une autre solution
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 C'est bon , j'ai trouver le moyen de rechercher le mot exacte dans la base de donnée
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 (modifié) Bon suis pas comme sa $sql = "SELECT url, description FROM neo_sites WHERE description REGEXP '$search'"; Merci a Nexen Et vous tous pour votre aide Si quelqu'un a des commentaires ? Modifié 18 Octobre 2003 par Neoboot
Guest exabs Posté 18 Octobre 2003 Posté 18 Octobre 2003 T'es sur que cela suffit ce que tu indiques ? mysql> SELECT "a word a" REGEXP "[[:<:]]word[[:>:]]"; -> 1mysql> SELECT "a xword a" REGEXP "[[:<:]]word[[:>:]]"; -> 0 J'ai déjà utilisé les expressions régulières dans une requête mais je ne suis pas arrivé à ce que je voulais, à savoir chercher à la fois les mots au singulier et au pluriel lorsqu'ils sont saisies au singulier dans le moteur...
smile Posté 18 Octobre 2003 Posté 18 Octobre 2003 (modifié) ha oui utiisé les expressions régulières dans les requettes pas mal j'en apprend tous les jours ici, j'adore exabs, dac pour le mail, tu me donneras une réponse Modifié 18 Octobre 2003 par smile
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 (modifié) enfaite me suis trompé, j'ai pas donné le bon code $sql = "SELECT url, description FROM neo_sites WHERE description REGEXP '$search([^a-zA-Z0-9])'"; donc si dans la desscription il y a : "salut les amis <<lemuriens>>." et que tu fait une recherche sur "lemuriens" il te trouve "lemuriens" cool C'est se qui me fallait. Pour la recherche au singulier ou au pluriel je sais pas encore mais je vais me pencher dessus et je vous tien au courant Modifié 18 Octobre 2003 par Neoboot
Neoboot Posté 18 Octobre 2003 Auteur Posté 18 Octobre 2003 dans se cas la $search([^a-zA-Z0-9]) veux dire trouver le mot $search qui n'as pas de lettre ni de chiffre apres sa dernier lettre
Guest exabs Posté 19 Octobre 2003 Posté 19 Octobre 2003 Mais si tu cherches 'rien', il doit trouver 'lemurien' non ?
Neoboot Posté 19 Octobre 2003 Auteur Posté 19 Octobre 2003 (modifié) Ben non, Je viens de fair un test avec : -$search = Ven -"description" = Vendez votre site J'ai 0 resultat pour Ven, ven... J'ai 0 résultat vendez J'ai 1 resultat pour Vendez Modifié 19 Octobre 2003 par Neoboot
Guest exabs Posté 19 Octobre 2003 Posté 19 Octobre 2003 Pour ce qui est après le mot à chercher je suis d'accord mais pour ce qui se trouve avant ? "rien" -> "lémurien"
Neoboot Posté 19 Octobre 2003 Auteur Posté 19 Octobre 2003 (modifié) arf oui, on etait pas sur la même longueur je viens d'essayer avec $search = "dez".... Et il me trouve "vendez"... Modifié 19 Octobre 2003 par Neoboot
Neoboot Posté 19 Octobre 2003 Auteur Posté 19 Octobre 2003 (modifié) Et ? REGEXP '([^a-zA-Z0-9])$search([^a-zA-Z0-9])'"; Ah vu de nez sa devrait marcher sa non ? Modifié 19 Octobre 2003 par Neoboot
Anonymus Posté 19 Octobre 2003 Posté 19 Octobre 2003 Pourrais tu donner le type de colonnes, s'il te plait ? (varchar, text, blob, ...) le probleme n'est pas le meme si c'est l'un ou l'autre. Ainsi, si la colonne est blob, elle est sensible à la casse ('vendez' est différent de 'Vendez'), que ce soit avec LIKE ou avec REGEXP. Avec REGEXP et varchar insensible à la casse trouve le mot si tu n'en mets qu'une partie Avec REGEXP et BLOB : sensible à la casse, mais trouve la chaine dans une phrase Avec LIKE et varchar insensible à la casse ne trouve pas la chaine dans la phrase ne trouve pas la chaine s'il en manque une partie Avec LIKE et BLOB sensible à la casse ne trouve pas la chaine dans la phrase ne trouve pas la chaine s'il en manque une partie Anonymus.
Neoboot Posté 19 Octobre 2003 Auteur Posté 19 Octobre 2003 Oui ma colonne est de type BLOB se qui veux bien dire "sensible à la casse" TEXTE même propriété que BLOB mais "insensible à la casse"
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant