Avatar billede justdoit Nybegynder
17. november 2002 - 14:01 Der er 24 kommentarer og
1 løsning

Rod med søgefunktion ;o)

Når jeg søger på noget jeg ved der er i db'en så finder den bare alt???

<%
Dim StrKeyword
StrKeyword = Replace(Request.Form("soeg"), "'", "''")
'If strKeyword <> "" Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConString
StrSql = "SELECT * FROM annoncer WHERE annoncetekst LIKE '%" & strKeyword & "%'"
Set objRec = Conn.Execute(StrSql)
%>

Hvad er der galt??
Avatar billede pfp Nybegynder
17. november 2002 - 14:07 #1
Oprettede du ikke også dette spm. igår?
Avatar billede justdoit Nybegynder
17. november 2002 - 14:08 #2
Jo, men jeg har ændret lidt i det jeg laver - og det virker stadig ikke, derfor et nyt spørgsmål!
Avatar billede abpdk Nybegynder
17. november 2002 - 14:09 #3
Nu kender jeg ikke lige så meget til ASP, men kunne det tænkes at den er case-censitiv så tin erklæring af StrKeyword (med stort S) bliver tolket som en anden variaben end strKeyword (med lille s) og at den derfor bare søger på "%%"?
Avatar billede abpdk Nybegynder
17. november 2002 - 14:10 #4
tin=din ;)
Avatar billede justdoit Nybegynder
17. november 2002 - 14:13 #5
Tja, det kan være du har fat i noget der - men hvordan tager jeg højde fpr det, sådan at jeg fx. kan søge på fOdBoLd?
Avatar billede abpdk Nybegynder
17. november 2002 - 14:14 #6
Værdien af variablen er fuldstændig ligegyldig, men hvis der er rod med erklæringen er det muligt at strKeyword bare bliver "" og din søgning derfor bliver "% & "" & %" men jeg er som sagt ikke sikkert.
Avatar billede medions Nybegynder
17. november 2002 - 14:23 #7
<%
Dim StrKeyword
StrKeyword = Replace(Request.Form("soeg"), "'", "''")
StrKeyword = LCase(StrKeyword)
'If strKeyword <> "" Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConString
StrSql = "SELECT * FROM annoncer WHERE annoncetekst LIKE '" & LCase(strKeyword) & "'"
Set objRec = Conn.Execute(StrSql)
%>

Her vil det komme hvis det er i din DB!

//>Rune
Avatar billede justdoit Nybegynder
17. november 2002 - 14:30 #8
Nu har jeg sat det ind som du lige har skrevet, men hvor jeg før fandt ALT fra db, så finder den ingen ting nu - selvom jeg søger på ord som jeg ved er i db'en !?!
Avatar billede medions Nybegynder
17. november 2002 - 14:33 #9
Læs denne artikel skrevet af Dennis Knappe, så vil du forstå det hele meget bedere...

http://activedeveloper.dk/aspdigital/kapitel2/search.asp

//>Rune
Avatar billede abpdk Nybegynder
17. november 2002 - 14:34 #10
Det er nok fordi den nu søger på det præcise input i stedet for et pattern match. Prøv at tilføje %'erne igen.
Avatar billede justdoit Nybegynder
17. november 2002 - 15:04 #11
Jeg har lige læst artiklen, og den var da ok - giver lige det grundlæggende!

Men jeg har lige fundet ud af, at hvis jeg ufskriver StrKeyword, så står der ikke noget!!! Det fatter jeg altså ikke, men det må jeg jo lige prøve at ordne først!
Avatar billede medions Nybegynder
17. november 2002 - 15:12 #12
Prøv at skrive:

Response.Write(Request.Form("soeg"))

//>Rune
Avatar billede justdoit Nybegynder
17. november 2002 - 15:28 #13
Den udskriver ikke noget!!!

Der hvor jeg skriver i min form, ligger i en include file, men det giver vel ingen forskel?
Avatar billede medions Nybegynder
17. november 2002 - 15:30 #14
Nej, det skulle ikke give nogen forskel... Det lydet lidt underligt det der sker.. Er du sikker på at du Submitter dine data'er, og at de ligger i en form og med methoden POST?

//>Rune
Avatar billede justdoit Nybegynder
17. november 2002 - 15:36 #15
Dette er min form:

<Form name="menusoeg" method="POST" action="soegning.asp" style="margin:0px;">
<Input type="text" name="soegning" class="soeg">

og hvis jeg skriver Response.Write(Request.Form("soegning"))

så sker der ikke noget!
Avatar billede justdoit Nybegynder
17. november 2002 - 15:41 #16
Ja - jeg ændrede lige name="soeg" til name="soegning" men det var bare lige for at prøve at gøre et eller andet!!

Men det er godt nok underligt!!!
Avatar billede medions Nybegynder
17. november 2002 - 15:43 #17
Har du husket at slutte din <form> kode af igen? (</form>)

//>Rune
Avatar billede justdoit Nybegynder
17. november 2002 - 15:43 #18
ja, også det!!
Avatar billede justdoit Nybegynder
17. november 2002 - 15:49 #19
Så har jeg fundet fejlen - jeg har en case request.querystring("udvidet") hvor navnet ikke var rigtig!!
Avatar billede medions Nybegynder
17. november 2002 - 15:49 #20
lol

//>Rune
Avatar billede justdoit Nybegynder
17. november 2002 - 16:22 #21
Flot ikke ;o)

Hvordan kan jeg søge på to forskellige formfelter, sådan at hvis der er også er noget i felt nr 2, så skal det indgå i søgningen??

Her er de koder som jeg har bikset sammen!

<%
Dim StrKeyword
strKeyword = Trim(Request.Form("soegning"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect Request.ServerVariables("HTTP_REFERER")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
    StrKeyword = LCase(StrKeyword)

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConString
StrSql = "SELECT * FROM annoncer WHERE annoncetekst LIKE '" & LCase(strKeyword) & "%'"

Set objRec = Conn.Execute(StrSql)
If Not (objRec.BOF Or objRec.EOF) Then
%>
Avatar billede justdoit Nybegynder
17. november 2002 - 16:51 #22
så har jeg også fået det lavet!
Avatar billede medions Nybegynder
17. november 2002 - 16:53 #23
LOL fair nok!
Thx 4 Poinz

//>Rune
Avatar billede justdoit Nybegynder
17. november 2002 - 17:22 #24
Jeg har lige et spørgsmål, men sig lige til hvis jeg skal stille det som et nyt..

Bruger søger fx på Fugl og i en selectbox vælger bruger "alle typer"

Hvis "alle typer" vælges skal der kun søges sådan:

StrSql = "SELECT * FROM annoncer WHERE"
StrSql = StrSql & "(annoncetekst LIKE '" & LCase(strKeyword) & "%')"

Men hvis der vælges type = "blå" så skal der søges i db'en på alle de felter er har værdien fx 3,4 og 5 - men hvordan gør jeg det???

Jeg har prøvet lidt her, men jeg er ikke helt sikker på og jeg kan gøre det sådan!

strKeyword = Replace(strKeyword,"'","''")
    StrKeyword = LCase(StrKeyword)
    strKeyword2 = Replace(strKeyword2,"'","''")
    If strKeyword2 = "" then XXXXXXXXX??

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConString
StrSql = "SELECT * FROM annoncer WHERE"
StrSql = StrSql & "(annoncetekst LIKE '" & LCase(strKeyword) & "%')"
StrSql = StrSql & " AND (landsdel LIKE '" & strKeyword2 & "')"
Avatar billede medions Nybegynder
17. november 2002 - 19:56 #25
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConString
StrSql = "SELECT * FROM annoncer WHERE"
StrSql = StrSql & "(annoncetekst LIKE '" & LCase(strKeyword) & "%')"
StrSql = StrSql & " AND (landsdel LIKE '" & strKeyword2 & "' WHERE etfelt = 2)"

-du kan bare oprette et spm og lave en reference hertil når du har fået dit svar!

//>Rune
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