gatita_dev
Messages postés135Date d'inscriptionvendredi 27 mai 2005StatutMembreDernière intervention 5 février 2008
-
22 nov. 2007 à 11:40
gatita_dev
Messages postés135Date d'inscriptionvendredi 27 mai 2005StatutMembreDernière intervention 5 février 2008
-
22 nov. 2007 à 19:03
Bonjour,
Je veux effectuer un moteur de recherche dans une base de données, quand je cherche un seul mot ça marche mais dés qu'il y a plusieurs mot ça retourne rien. Est ce que quelqu'un peut m'indiquer comment je peux le faire?
Merci
gatita_dev
Messages postés135Date d'inscriptionvendredi 27 mai 2005StatutMembreDernière intervention 5 février 2008 22 nov. 2007 à 15:42
En fait, j'ai mis juste le code pour chercher un seul mot et j'ai pas trouvé la méthode pour traiter plusieurs mots, j'ai utiliser la requête suivante
select * from news where titre like '%"
& Mot1
&
"%' and description like '%" & Mot1
&
"%' or description like '%" & Mot1
&
"%' or titre like '%" & Mot1 &
"%'"
Ma question c'est comment je peux faire pour que je puisse chercher plusieurs mot?
esus1985
Messages postés76Date d'inscriptionmercredi 1 juin 2005StatutMembreDernière intervention26 février 2009 22 nov. 2007 à 17:15
c'est du pur sql a ce niveau la.
Tout dépend ce que tu veux :
mot1 et mot2
"select * from news where (titre like '%" & mot1 & "%' or description like '%" & mot1 & "%') and (titre like '%" & mot2 & "%' or description like '%" & mot2 & "%') "
mot1 ou mot2.
"select * from news where (titre like '%" & mot1 &
"%' or description like '%"
& mot1 &
"%') OR(titre like '%"
& mot2 &
"%' or description like '%"
& mot2 &
"%')"
après, si tu veux que le nombre de mot varie, tu mets une boucle sur l'écriture du where.
n'oublies pas les parenthèses, c'est mieu d'être rigoureux à ce niveau là.
gatita_dev
Messages postés135Date d'inscriptionvendredi 27 mai 2005StatutMembreDernière intervention 5 février 2008 22 nov. 2007 à 17:55
Oui ça marche mais je sais pas comment récuperer chaque mot à part en asp.net, parce que j'aurai une chaine que je doit divider en mot.
Est ce que je met la chaine dans un tableau et puis générer automatiquement la requete sql selon le nombre de mot?
Vous n’avez pas trouvé la réponse que vous recherchez ?
esus1985
Messages postés76Date d'inscriptionmercredi 1 juin 2005StatutMembreDernière intervention26 février 2009 22 nov. 2007 à 19:00
alors, comme ca de tête,
si tu as une chaine avec "mot1 mot2 mot3" (les mots ne contenants pas d'espace ou alors sinon, tu separes par un autre caractère que l'espace)
tu utilise la fonction split
mavar=split(ListeDeMot," ")
la variable mavar deviens un tableau contenant les mots
ensuite tu fais un
i=0
dim req="SELECT* from news where "
for i = 0 to ubound(mavar) 'ubound envoyant l'indice le plus elevé du tableau
if i = 0 then
req = req & "(titre like '%" & mot1 & "%' or description like '%" & mot1 & "%')
else
req =req & and "(titre like '%" & mot1 & "%' or description like '%" & mot1 & "%')
end if
next
et tu executes ta requête.
voila, c'est fait a l'arrache masi ca devrait fonctionner ^^