SELECT DISTINCT email, prenom, famille, ville FROM table
WHERE MATCH (email, prenom, famille, ville)
AGAINST ('+$brief[0] +$brief[1] +$brief[2]' IN BOOLEAN MODE)
SELECT DISTINCT email, prenom, famille, ville FROM table
WHERE MATCH (email, prenom, famille, ville)
AGAINST ('+$brief[0] +$brief[1] +$brief[2]' IN BOOLEAN MODE)
SELECT DISTINCT email, prenom, famille, ville FROM table
WHERE MATCH (email, prenom, famille, ville)
AGAINST ('+$brief[0] +$brief[1] +$brief[2]' IN BOOLEAN MODE)
Bonjour,
Désolé de cette question pas 100% Debian, mais MySQL tourne sous
Debian Jessie :-)
$brief est une variable correspondant à un mot clé qui ne peut
contenir que 3 infos maxi séparées par un espace.
On va supposer que le mot clé = "paris"
SELECT DISTINCT email, prenom, famille, ville FROM table WHERE
MATCH (email, prenom, famille, ville) AGAINST ('+$brief[0]
+$brief[1] +$brief[2]' IN BOOLEAN MODE)
et la base affiche toutes les personnes qui ont une info liée à
Paris.
Mais si le mot clé =" par" la base ne m'affiche aucun résultat.
Elle ne va matcher que les infos qui contiennent * exactement *
"par"
J'ai tenté cette méthode (ajouter un "%" de part et d'autres de la
variable) : AGAINST ('+%$brief[0]% +%$brief[1]% +%$brief[2]%' IN
BOOLEAN MODE) ça ne fonctionne pas.
Dommage, car c'est utile lorsque on est pas sûr de l'orthographe
d'un champ, et que l'on a retenu que ses x premières lettres.
Il y a cette méthode mais trop basique car elle ne permet pas des
recherches sur mots clés multiples : SELECT DISTINCT email, prenom,
famille, ville FROM table WHERE email LIKE '%$brief%' OR ville LIKE
'%$brief%' ...
Ma question : comment le faire avec : ... WHERE MATCH ... AGAINST
Merci.
André
Bonjour,
Désolé de cette question pas 100% Debian, mais MySQL tourne sous
Debian Jessie :-)
$brief est une variable correspondant à un mot clé qui ne peut
contenir que 3 infos maxi séparées par un espace.
On va supposer que le mot clé = "paris"
SELECT DISTINCT email, prenom, famille, ville FROM table WHERE
MATCH (email, prenom, famille, ville) AGAINST ('+$brief[0]
+$brief[1] +$brief[2]' IN BOOLEAN MODE)
et la base affiche toutes les personnes qui ont une info liée à
Paris.
Mais si le mot clé =" par" la base ne m'affiche aucun résultat.
Elle ne va matcher que les infos qui contiennent * exactement *
"par"
J'ai tenté cette méthode (ajouter un "%" de part et d'autres de la
variable) : AGAINST ('+%$brief[0]% +%$brief[1]% +%$brief[2]%' IN
BOOLEAN MODE) ça ne fonctionne pas.
Dommage, car c'est utile lorsque on est pas sûr de l'orthographe
d'un champ, et que l'on a retenu que ses x premières lettres.
Il y a cette méthode mais trop basique car elle ne permet pas des
recherches sur mots clés multiples : SELECT DISTINCT email, prenom,
famille, ville FROM table WHERE email LIKE '%$brief%' OR ville LIKE
'%$brief%' ...
Ma question : comment le faire avec : ... WHERE MATCH ... AGAINST
Merci.
André
Bonjour,
Désolé de cette question pas 100% Debian, mais MySQL tourne sous
Debian Jessie :-)
$brief est une variable correspondant à un mot clé qui ne peut
contenir que 3 infos maxi séparées par un espace.
On va supposer que le mot clé = "paris"
SELECT DISTINCT email, prenom, famille, ville FROM table WHERE
MATCH (email, prenom, famille, ville) AGAINST ('+$brief[0]
+$brief[1] +$brief[2]' IN BOOLEAN MODE)
et la base affiche toutes les personnes qui ont une info liée à
Paris.
Mais si le mot clé =" par" la base ne m'affiche aucun résultat.
Elle ne va matcher que les infos qui contiennent * exactement *
"par"
J'ai tenté cette méthode (ajouter un "%" de part et d'autres de la
variable) : AGAINST ('+%$brief[0]% +%$brief[1]% +%$brief[2]%' IN
BOOLEAN MODE) ça ne fonctionne pas.
Dommage, car c'est utile lorsque on est pas sûr de l'orthographe
d'un champ, et que l'on a retenu que ses x premières lettres.
Il y a cette méthode mais trop basique car elle ne permet pas des
recherches sur mots clés multiples : SELECT DISTINCT email, prenom,
famille, ville FROM table WHERE email LIKE '%$brief%' OR ville LIKE
'%$brief%' ...
Ma question : comment le faire avec : ... WHERE MATCH ... AGAINST
Merci.
André
Le 02/02/16 à 12:09, Sébastien NOBILI a écrit :
Oui, si ton code est du php regarde coté PDO ça va te faciliter la vie en
$query = 'SELECT DISTINCT email, prenom, famille, ville FROM table
WHERE MATCH (email, prenom, famille, ville)
AGAINST (:recherche IN BOOLEAN MODE)'
$params = array(
':recherche' => $brief[0] .$brief[1] .$brief[2]
);
$resultats = uneFct($query, $params);
(où uneFct enveloppe un appel à PDO et retourne un tableau, à adapter
à tes besoins)
Autre remarque, en php la concaténation c'est . et pas +, si $brief[ xx] est
une chaîne ton
$brief[0] +$brief[1] +$brief[2] vaut toujours 0
Autre remarque, en php la concaténation c'est . et pas + :
Le 02/02/16 à 12:09, Sébastien NOBILI <sebnewsletter@free.fr> a écrit :
Oui, si ton code est du php regarde coté PDO ça va te faciliter la vie en
$query = 'SELECT DISTINCT email, prenom, famille, ville FROM table
WHERE MATCH (email, prenom, famille, ville)
AGAINST (:recherche IN BOOLEAN MODE)'
$params = array(
':recherche' => $brief[0] .$brief[1] .$brief[2]
);
$resultats = uneFct($query, $params);
(où uneFct enveloppe un appel à PDO et retourne un tableau, à adapter
à tes besoins)
Autre remarque, en php la concaténation c'est . et pas +, si $brief[ xx] est
une chaîne ton
$brief[0] +$brief[1] +$brief[2] vaut toujours 0
Autre remarque, en php la concaténation c'est . et pas + :
Le 02/02/16 à 12:09, Sébastien NOBILI a écrit :
Oui, si ton code est du php regarde coté PDO ça va te faciliter la vie en
$query = 'SELECT DISTINCT email, prenom, famille, ville FROM table
WHERE MATCH (email, prenom, famille, ville)
AGAINST (:recherche IN BOOLEAN MODE)'
$params = array(
':recherche' => $brief[0] .$brief[1] .$brief[2]
);
$resultats = uneFct($query, $params);
(où uneFct enveloppe un appel à PDO et retourne un tableau, à adapter
à tes besoins)
Autre remarque, en php la concaténation c'est . et pas +, si $brief[ xx] est
une chaîne ton
$brief[0] +$brief[1] +$brief[2] vaut toujours 0
Autre remarque, en php la concaténation c'est . et pas + :