GNT sans publicité, site mobile, fonctionnalitées exclusives...

[HS] syntaxe SQL et/ou php

Le
h.wismes
Bonjour,

Dans le cadre d'une recherche d'informations dans
une base de données, par mots clé, je n'arrive pas
à concrétiser ce type de recherche :

Le mieux est de donner un exemple.

mot clé (motcle) = "biographie richard stallman"

$query_string = "SELECT * FROM table WHERE infos LIKE '%$motcle%' ";

Or, le nom "stallman" existe bien dans la base mais
"biographie richard stallman" n'est pas contenu dans "stallman".

Comment faire alors le contraire, c'est à dire faire la recherche
selon "stallman' contenu dans "biographie richard stallman" ?

Quel serait la syntaxe SQL ou php en ce sens ?

Merci.

Henri

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20111104112...7.h.wismes@free.fr
Lire les 11 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Grégory Bulot
Le #23934841
Bonjour, Bonsoir,

Le Fri, 4 Nov 2011 11:20:26 +0100, , vous avez écrit :

mot clé (motcle) = "biographie richard stallman"

$query_string = "SELECT * FROM table WHERE infos LIKE '%$motcle%' ";



- transformer $motcle en tableau
- like '%$motcle[1] or like '%$motcle[1] .... ainsi de suite jusqu'au
dernier mot

--
Cordialement
Grégory BULOT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
h.wismes
Le #23934881
Le vendredi 04 novembre 2011, Grégory Bulot a écrit :
Le Fri, 4 Nov 2011 11:20:26 +0100, , vous avez écrit :
> mot clé (motcle) = "biographie richard stallman"
> $query_string = "SELECT * FROM table WHERE infos LIKE '%$motcle%' ";

- like '%$motcle[1] or like '%$motcle[1] .... ainsi de suite jusqu'au de rnier mot
Grégory BULOT


--------------

Ne serait-ce pas : like '%$motcle[1] or like '%$motcle[2]

- transformer $motcle en tableau :


Tableau = array ?

ainsi de suite jusqu'au dernier mot :


Comment compter les mots du mot clé ?

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Grégory Bulot
Le #23934971
Bonjour, Bonsoir,

Le Fri, 4 Nov 2011 11:51:27 +0100, , vous avez écrit :


Ne serait-ce pas : like '%$motcle[1] or like '%$motcle[2]



Si toutafait :-D

Comment compter les mots du mot clé ?



Autant de solutions que de Dev php présent sur cette liste,

je ferais un foreach
http://docs.php.net/manual/fr/contr...oreach.php




--
Cordialement
Grégory BULOT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Jean-Michel OLTRA
Le #23935021
Bonjour,


Le vendredi 04 novembre 2011, a écrit...


Dans le cadre d'une recherche d'informations dans
une base de données, par mots clé, je n'arrive pas
à concrétiser ce type de recherche :

Le mieux est de donner un exemple.

mot clé (motcle) = "biographie richard stallman"

$query_string = "SELECT * FROM table WHERE infos LIKE '%$motcle%' ";

Or, le nom "stallman" existe bien dans la base mais
"biographie richard stallman" n'est pas contenu dans "stallman".

Comment faire alors le contraire, c'est à dire faire la recherche
selon "stallman' contenu dans "biographie richard stallman" ?



Quel serveur de bases de données ?

Tu pourrais regarder si les possibilités de la recherche fulltext te
conviennent ?

Sinon, sous mysql voir si tu peux utiliser les fonctions de regexp ?
select 'Biographie richard Stallman' regexp '.*Stallman';

Ou bien find_in_set ?
select find_in_set('stallman', 'biographie,richard,stallman');


--
jm

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
h.wismes
Le #23935211
Le vendredi 04 novembre 2011, Jean-Michel OLTRA a écrit :
Le vendredi 04 novembre 2011, a écrit...
> Dans le cadre d'une recherche d'informations dans
> une base de données, par mots clé, je n'arrive pas
> à concrétiser ce type de recherche :
> mot clé (motcle) = "biographie richard stallman"
> $query_string = "SELECT * FROM table WHERE infos LIKE '%$motcle%' ";
> Or, le nom "stallman" existe bien dans la base mais
> "biographie richard stallman" n'est pas contenu dans "stallman".
> Comment faire alors le contraire, c'est à dire faire la recherche
> selon "stallman' contenu dans "biographie richard stallman" ?


----------------------
Quel serveur de bases de données ? :


MySQL

Tu pourrais regarder si les possibilités de la recherche fulltext te conviennent ?


J'ai vu intéressant mais :
Erreur de la requete SELECT * FROM table WHERE MATCH (liens , comments) AGA INST ('biographie richard stallman') .

Sinon, sous mysql voir si tu peux utiliser les fonctions de regexp ?
select 'Biographie richard Stallman' regexp '.*Stallman'; :


Oui, mais il faut détacher chaque mot automatiquement
car $var=variable à contenu aléatoire

Ou bien find_in_set ?
select find_in_set('stallman', 'biographie,richard,stallman');
jm



La solution serait sans doute :
- ($var=variable à contenu aléatoire) ici : $var="biographi e richard stallman";
- $var = explode(' ', $var);
- détacher chaque mot par leur variable : $mot1 , $mot2, $mot3 ...
- select find_in_set('$mot1' , '$mot2' , '$mot3') ....

et cerise sur le gâteau, supprimer les mots inopportuns :
de, le, la, du, ... etc ...

Merci

Henri

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Publicité
Suivre les réponses
Poster une réponse
Anonyme