Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MOTEUR DE RECHERCHE


Information sur la source

Catégorie :Base de données Niveau : Débutant Date de création : 17/02/2002 Date de mise à jour : 17/02/2002 03:38:43 Vu : 11 785

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Création d'une requette SQL de recherche avec plusieurs mots clés.  
 

Source

  • '*************Création de la requette SQL de recherche***********************
  • set conn=server.createobject("adodb.connection")
  • conn.open "--nom du dns--"
  • dim table
  • dim mot_cle
  • dim requette
  • dim listecle
  • '****Nom de la table et des champs de recherche********
  • table="produits"
  • dim champ(5)
  • champ(0)="champ1"
  • champ(1)="champ2"
  • champ(2)="champ3"
  • champ(3)="champ4"
  • champ(4)="champ5"
  • '****Mot cle****
  • mot_cle="paris marseille nancy rouen montpellier"
  • '****Type de recherche***
  • 'config=1 tous les motes clés
  • 'config=2 ou moins un des mots clés
  • config=1
  • requette="select * from "&table&" where "
  • if mot_cle<>"" then
  • listecle = Split(replace(mot_cle,"'","''")," ",-1, 1)
  • i=0
  • while i<=UBound(listecle)
  • if config=1 then
  • if i>0 then requette=requette&" and " end if
  • else
  • if i>0 then requette=requette&" or " end if
  • end if
  • i2=0
  • while i2<UBound(champ)
  • if i2=0 then
  • requette=requette&"("
  • else
  • requette=requette&" or "
  • end if
  • requette=requette&champ(i2)&" like '%"&listecle(i)&"%'"
  • if i2=(UBound(champ)-1) then requette=requette&")" end if
  • i2=i2+1
  • wend
  • i=i+1
  • wend
  • end if
  • set resultat=conn.execute(requette)
  • '*************Création de la requette SQL de recherche***********************
  • l'exemple ci-dessus renvoi cette requette SQL
  • select * from produits where (champ1 like '%paris%' or champ2 like '%paris%' or champ3 like '%paris%' or champ4 like '%paris%' or champ5 like '%paris%') and (champ1 like '%marseille%' or champ2 like '%marseille%' or champ3 like '%marseille%' or champ4 like '%marseille%' or champ5 like '%marseille%') and (champ1 like '%nancy%' or champ2 like '%nancy%' or champ3 like '%nancy%' or champ4 like '%nancy%' or champ5 like '%nancy%') and (champ1 like '%rouen%' or champ2 like '%rouen%' or champ3 like '%rouen%' or champ4 like '%rouen%' or champ5 like '%rouen%') and (champ1 like '%montpellier%' or champ2 like '%montpellier%' or champ3 like '%montpellier%' or champ4 like '%montpellier%' or champ5 like '%montpellier%')
'*************Création de la requette SQL de recherche***********************
set conn=server.createobject("adodb.connection")
conn.open "--nom du dns--"

dim table
dim mot_cle
dim requette
dim listecle

'****Nom de la table et des champs de recherche********
table="produits"
	
	dim champ(5)
	champ(0)="champ1"
	champ(1)="champ2"
	champ(2)="champ3"
	champ(3)="champ4"
	champ(4)="champ5"


'****Mot cle****
mot_cle="paris marseille nancy rouen montpellier"

'****Type de recherche***
'config=1 tous les motes clés
'config=2 ou moins un des mots clés
config=1


requette="select * from "&table&" where "

if mot_cle<>"" then

	listecle = Split(replace(mot_cle,"'","''")," ",-1, 1)
	
	i=0
	while i<=UBound(listecle)
		if config=1 then
		if i>0 then requette=requette&" and " end if
		else
		if i>0 then requette=requette&" or " end if
		end if
			i2=0
			while i2<UBound(champ)
				if i2=0 then 
				requette=requette&"("
				else
				requette=requette&" or "
				end if
				requette=requette&champ(i2)&" like '%"&listecle(i)&"%'"
				if i2=(UBound(champ)-1) then requette=requette&")" end if
			i2=i2+1
			wend
	i=i+1
	wend

end if

set resultat=conn.execute(requette)
'*************Création de la requette SQL de recherche***********************



l'exemple ci-dessus renvoi cette requette SQL

select * from produits where (champ1 like '%paris%' or champ2 like '%paris%' or champ3 like '%paris%' or champ4 like '%paris%' or champ5 like '%paris%') and (champ1 like '%marseille%' or champ2 like '%marseille%' or champ3 like '%marseille%' or champ4 like '%marseille%' or champ5 like '%marseille%') and (champ1 like '%nancy%' or champ2 like '%nancy%' or champ3 like '%nancy%' or champ4 like '%nancy%' or champ5 like '%nancy%') and (champ1 like '%rouen%' or champ2 like '%rouen%' or champ3 like '%rouen%' or champ4 like '%rouen%' or champ5 like '%rouen%') and (champ1 like '%montpellier%' or champ2 like '%montpellier%' or champ3 like '%montpellier%' or champ4 like '%montpellier%' or champ5 like '%montpellier%')

Commentaires et avis

signaler à un administrateur
Commentaire de Djero le 11/03/2002 12:09:49

C'est vraiment domage qu'il n'y ai pas de fichier zip dispo :(

signaler à un administrateur
Commentaire de Djero le 18/03/2002 10:34:08

Pourrais tu nous fournir un exemple complet avec connection à la bdd et tout le tintouin...

Merci à toi ;)

signaler à un administrateur
Commentaire de neoconception le 10/05/2003 18:03:20

putian, depuis le temps que je chercher ce genre de moteur de recherche "multi-mot" , heu, c ou qu'on donne les sous sous ? lol :p

signaler à un administrateur
Commentaire de D1stort1on le 05/08/2005 18:08:19

Salut

Ton code est vraiment excellent, bravo et merci :P

@+

signaler à un administrateur
Commentaire de kikuyu le 16/08/2005 10:17:25

Très beau code bravo !!

J'ai apporté une petite modification qui peut-être intéressante.
J'ai rendu dynamique le tableau se rapportant au nom des champs de BD (ligne 10 à 22)
voici le code :

   '***********************************requête SQL de la table concernée
   SQL="SELECT * FROM "&table&" "
   Set RS = server.createobject("ADODB.Recordset")
   RS.Open SQL, conn , 3, 3
   '**************************************Nombre de colonne dans la table
   nombre_de_champ = RS.Fields.Count
   '**************************************construction du tableau
   dim champ()
   redim champ(nombre_de_champ)

   numero = 0
  
FOR each BIDON in RS.Fields
champ(numero) =  BIDON.Name
numero=numero+1
Next


RS.Close : Set RS = Nothing

signaler à un administrateur
Commentaire de Nightwolf774 le 16/06/2006 14:02:34

Merci pour ton code mais je suis un débutant et je ne voix pas comment faire pour la request des mots clef? tu na pas fait de zone de saisie?
Et je tavouerais que je ne sais pas trop comment l'intégrer et faire les zone de réponse

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.