Avatar billede starleicht Nybegynder
25. oktober 2001 - 13:58 Der er 11 kommentarer og
1 løsning

Vedr Søgefunktion

Jeg har fulgt med i spm http://www.eksperten.dk/spm/125300 og har selv brugt koden, og det virker næsten efter hensigten.

strValue er hentet fra en formular i eksemplet:  opland \"Mariager Fjord\"
Der bliver lavet et array udfra mellemrum i strValue, og i ovenstående tilfælde bliver det:
opland, \"Mariager, Fjord\"

Hvordan får jeg koden til at opfatte alt mellem gåseøjnene som et element, d.v.s:  opland, Mariager Fjord

<%
strValue =\"opland \"\"Mariager Fjord\"\"\"
\'strValue = Request(\"searchword\")
strAryWords = Split(strValue, \" \")

Dim intCol
For intCol = 0 to UBound(strAryWords)
    firstSQL1 = firstSQL1 & \" (Oprettet LIKE \'%\" & strAryWords(intCol) & \"%\')\"
    firstSQL1 = firstSQL1 & \" OR (Titel LIKE \'%\" & strAryWords(intCol) & \"%\')\"
    firstSQL1 = firstSQL1 & \" OR (Udgivelse LIKE \'%\" & strAryWords(intCol) & \"%\')\"
    firstSQL1 = firstSQL1 & \" OR (PubResume LIKE \'%\" & strAryWords(intCol) & \"%\')\"
    firstSQL1 = firstSQL1 & \" OR (pdf LIKE \'%\" & strAryWords(intCol) & \"%\')\"
    firstSQL1 = firstSQL1 & \" OR (Emnegruppe LIKE \'%\" & strAryWords(intCol) & \"%\')\"   
    if intCol < UBound(strAryWords) then
        firstSQL1 = firstSQL1 + \" OR \"
    end if
Next

firstSQL = \"SELECT * FROM samlet WHERE \"&firstSQL1&\";\"
%>
Avatar billede jgp Nybegynder
25. oktober 2001 - 14:17 #1
i strValue opretter du et array, på denne måde:
strValue =\"opland,Mariager Fjord\"
Avatar billede starleicht Nybegynder
25. oktober 2001 - 14:25 #2
jqp: strValue kommer fra en formular og har dette format:

opland \"Mariager Fjord\"

Dette skal laves om til at array med 2 elementer: opland, Mariager Fjord
Avatar billede jgp Nybegynder
25. oktober 2001 - 14:29 #3
starleicht: har strValue, altid det format?
Avatar billede starleicht Nybegynder
25. oktober 2001 - 14:30 #4
Ja de enkelte elementer adskilt af mellemrum, undtagen ord mellem gåseøjne, der opfattes som ét element
Avatar billede jgp Nybegynder
25. oktober 2001 - 14:37 #5
Hmm det lyder besværligt, Hvordan siger du detformat bliver oprettet i første omgang?
Avatar billede starleicht Nybegynder
25. oktober 2001 - 14:39 #6
Brugeren skriver det ind i denne formular, og dytter på søg:

<form NAME=\"form\" action=\"search_ny.asp\" method=\"post\" target=\"Main\">
    <INPUT TYPE=\"text\" NAME=\"searchword\" SIZE=\"15\" value=\"\">
    <INPUT TYPE=\"Submit\" value=\"Søg\" NAME=\"submit\">
</form>

Det er jo standard i søgemaskiner på nettet at ord mellem gåseøjne opfattes som samlet.
Avatar billede jgp Nybegynder
25. oktober 2001 - 14:43 #7
Okey, hvad med at skrive, at søgninger på forskellige ord, skal skilles med \",\" alså så en søgning ser sådan ud:

hej, \"med dig\", \"går det godt?\"

Det vil give dig det array, du øsnker
Avatar billede starleicht Nybegynder
25. oktober 2001 - 14:48 #8
Ja, det ville være en løsning, og hvis der ikke kommer andre løsninger, må jeg jo \"falde tilbage\" til den. Men nu har jeg sat mig i hovedet at det andet skal virke.
Avatar billede jgp Nybegynder
25. oktober 2001 - 14:58 #9
starleicht: det andet kan også lade sig gøre, men hvordan kan jeg ikke fortælle dig lige på stedet :-(
Avatar billede tofte Juniormester
27. oktober 2001 - 01:07 #10
den er lidst sjusket lavet, men den burde virke. Den danner en ny array som du så kan behandle i din SQL.

dim strIn,ary,t1,t2,newar(30),tmp,inn

strIn=Request.form(\"navn\")

ary=split(strIn,\" \")

t2=0
t1=LBound(ary)
inn=0

While not t1=UBound(ary)+1
    if left(ary(t1),1)=\"\'\" then inn=1
    if inn=1 then
        if right(ary(t1),1)=\"\'\" then inn=0
        tmp=tmp&\" \"&ary(t1)
        if    inn=0 then
            newar(t2)=replace(tmp,\"\'\",\"\")
            t2=t2+1
            tmp=\"\"
        end if
    else
        newar(t2)=ary(t1)
        t2=t2+1
    end if
    t1=t1+1
wend

Avatar billede tofte Juniormester
27. oktober 2001 - 01:08 #11
den er som du kan se, lavet til at slå ud på \' og ikke på \", men det kan du vel selv, hvis du får lyst.
Avatar billede starleicht Nybegynder
29. oktober 2001 - 09:46 #12
Jep, det virker - Tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester