"gitte nielsen" <gbfNOSPAN@tele2adsl.dk> skrev i en meddelelse
news:45800e1d$0$49203$14726298@news.sunsite.dk...
> Hej
>
> Jeg har en masse unikke dokumenter liggende på et websted og
> ville gerne lave database til hvor jeg kunne søge på tre
> forskellige fastevalg(rulle ned knap) eksempel felt 1 sodavand
> felt 2 gul felt tre pind dette resultat giver så en side/dokument
>
> Er der nogle der kan give mig et godt råd hvordan jeg kan løse
> mit problem er ikke særlig god til databaser og kan ikke finde en
> skabelon der passer til mig
>
> Gitte
> fjern nospan fra min mail
>
>
Du kan starte med at dele problemet op i mindre, mere overskuelige
opgaver. Du nævner 2 centrale ting, søgeord og dokumenter.
Søgeord i rulle-ned knapperne og selve dokumenterne.
Ud fra det kan du lave 2 centrale tabeller.
Du kunne lave en tabel med ord der kan søges på.
noget a la :
Tabel ordliste
___ordID___|___ord____
1 | sodavand
2 | gul
3 | pind
4 | øl
5 | blå
6 | line
7 | alkohol
8 | rød
9 | stang
o.s.v.
Dernæst kan du lave en tabel med alle dokumenter:
Tabel dokumenter
___dokumentID___|____url___
1 | side1.htm
2 | side2.htm
3 | side3.htm
o.s.v.
Næste opgave er så at hente ord fra ordliste-tabellen ind i de rigtige
rulle-nedknapper.
F.eks. skal den første rulle-ned knap indeholde ordet "sodavand", men ikke
"gul" o.s.v.
For at knytte ordet "sodavand" til den første rulle-knap, kan du lave en
flette-tabel.
F.eks.
knapOrd
___knapID___|____ordID___
1 | 1
2 | 2
3 | 3
1 | 4
2 | 5
3 | 6
1 | 7
2 | 8
3 | 9
( 1 = rulleknap med drikkevare, 2 = rulleknap med farve, 3 = rulleknap med
det sidste)
ordID referer til ordID i ordliste-tabellen.
For at knytte ord til en dokument, kan du igen lave en flette-tabel efter
samme princip.
Du kan dog lave tabellen på 2 måder. Første måde er en tabel med 4 kolonner.
Tabel dokumentOrd med 4 kolonner :
___dokumentID___|___ordID1___|___ordID2___|____ordID3____
1 1 2
3
o.s.v.
Eller tabel dokumentOrd med 2 kollonner :
____dokumentID___|____ordID____
1 | 1
1 | 2
1 | 3
o.s.v.
(dokumentID referer til dokumentID i dokument-tabellen og ordID referer til
ordID i ordliste-tabellen)
I begge tabeller referer tallene til henholdsvis dokument-tabellen og
ordliste-tabellen.
Fordelen ved den første er, at du umiddelbart kan finde dokumenter der
matcher alle 3 ord.
Ulempen er hvis du nu indsætter et fjerde søge-kriterie ( fjerne
rulle-knap).
Så skal den første tabel tilføres en 4- kolonne ordID4.
Fordelen ved den anden tabel med 2 kolonner, er netop at den ikke skal
ændres hvis du
tilføre et 4. søgekriterie.
Ulempen er imidlertidig at når du laver en søgning på de 3 kriterier, skal
du løbe søgereultatet
igennem for at finde et dokumentID, der findes 3 gange.
Eller sagt på en anden måde....du vil finde alle dokumenter der passer på ét
eller flere af ordene.
Dernæst er det sådan set bare at hente data.
For at hente alle ord, der skal stå i en rulle-knap (den med sodavand), kan
du lave en asp-funktion.
function hentKnapData( index )
....kode
end function
hvor "index" i parantesen er det index-nummer (knapID) , knappen har i
tabellen knapOrd.
Så kalder du bare hentKnap-funktionen , for hver rulle-ned knap på siden.
F.eks.
hentKnapData( 1 ) ' henter ordene til rullened-knap 1
hentKnapData( 2 ) ' henter ordene til rullened-knap 2
hentKnapData( 3 ) ' henter ordene til rullened-knap 3
Og hvis du nu skal tilføre endnu en rullened-knap (søge-kriterie) :
hentKnapData( 4 ) ' henter ordene til rullened-knap 1
Det gør det hele lidt mere fleksibelt, når hentKnapData-funktionen kun
henter
data for 1 knap af gangen.
Slutteligt er der selve søgningen.
Her er funktionen lidt afhængig af, hvordan tabellen dokumentOrd ser ud ( 2
eller 4 kolonner).
Hvis tabellen er med 4 kolonner, ligger den lige til højre-benet.
Hvis tabellen er med 2 kolonner, skal det resultat-sæt du får fra databasen,
gennemgås for finde de
dokumenter, der findes 3 gange.
Omvendt giver det mulighed for at finde de dokumenter der f.eks. matcher på
2 af ordene og på 1 af ordene
F.eks. :
Matcher på alle 3 ord :
minside.htm
..
Matcher på 2 ord :
minAndenside.htm
Matcher på 1 ord :
minTrejdeSide.htm
Sådan vil jeg umiddelbart gribe det an.
Med venlig hilsen
Michael Weber
|