begin process at 2008 05 16 08:47:39
1 173 235 membres
76 nouveaux aujourd'hui
13 970 membres club

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 : 10 933

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%')
  • 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

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Boutique

Boutique de goodies CodeS-SourceS