Avatar billede Slettet bruger
13. februar 2003 - 20:52 Der er 2 kommentarer og
1 løsning

Søgning med MySQL

Hej eksperter....

jeg er ved at lave en søgefunktion, baseret på en MySQL databse. men, når jeg eksempelvis laver en søgning på paging med bestem kategori, og en søgning på samme men i alle kategorier, giver sidst nævnte mindre forekomster en første. hvordan kan det være ?

koden er her:

<%
keyword = request.form("s")
keyword = Replace(keyword, "'", "''")
keyword = Replace(keyword, "&#124;&#124;", "&#124;")

strkat = request.form("kat")
%>


<%
'Først skal vi have antallet af poster

if request.form("kat") = "alle" then

strSQL = "SELECT COUNT(*) AS records FROM stlinks WHERE mainkat = '" & strkat & "' AND"
strSQL = strSQL & " (titel LIKE '%" & Keyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & Keyword & "%')"
Set objRs = conn.execute(strSQL)

else

strSQL = "SELECT COUNT(*) AS records FROM stlinks WHERE"
strSQL = strSQL & " (titel LIKE '%" & Keyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & Keyword & "%')"
Set objRs = conn.execute(strSQL)

end if

intRecords = int(objRs("records")-1)
objRs.Close
Set objRs = Nothing

'Variabler til query´et
intPage = Request.QueryString("page")
if intPage = "" OR not isNumeric(intPage) then
    intPage = int(1)
else
    intPage = int(intPage)
end if
intPageSize = int(5)
intStart = intPage*intPageSize
intStart = intStart-intPageSize
intPages = int(intRecords/intPageSize)+1

if request.form("kat") = "alle" then

strSQL = "SELECT ID, titel, url, beskrivelse, mainkat, subkat FROM stlinks WHERE "
strSQL = strSQL & " (titel LIKE '%" & Keyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & Keyword & "%')"
set objrs = conn.execute(strSQL)

else

strSQL = "SELECT ID, titel, url, beskrivelse, mainkat, subkat FROM stlinks WHERE mainkat = '" & strkat & "' AND"
strSQL = strSQL & " (titel LIKE '%" & Keyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & Keyword & "%')"
set objrs = conn.execute(strSQL)

end if

    if objRs.EOF or objRs.BOF then
        Response.Write "Ingen poster"
        antal = "0"
    else
        antal = "1"
            Do until objRs.EOF
%>

håber i kan / vil hjælpe.

mvh.
Questis
Avatar billede eagleeye Praktikant
13. februar 2003 - 22:17 #1
For mig ser det ud som om du har byttet rundt på de to SQL sætninger du søger du i en bestemt kategori hvis kategorien er = "alle"

if request.form("kat") = "alle" then
  'Søger med
  WHERE mainkat = '" & strkat & "' AND"

else

end if


En anden ting er du kun AND'er kategoren samme med titel, mens beskrivelse bliver søgt igennem alle kategorier da AND har høre prioritet end OR:

mainkat = 'x' AND (titel LIKE '%x%') OR (beskrivelse LIKE '%x%')

Der skal () omkring de to OR for at kategorien bliver AND'ed på begge kolonne:

mainkat = 'x' AND ((titel LIKE '%x%') OR (beskrivelse LIKE '%x%'))


Så prøv med denne if sætning og der tilhørne SQL'er:


if request.form("kat") = "alle" then

strSQL = "SELECT COUNT(*) AS records FROM stlinks WHERE"
strSQL = strSQL & " (titel LIKE '%" & Keyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & Keyword & "%')"
Set objRs = conn.execute(strSQL)

else

strSQL = "SELECT COUNT(*) AS records FROM stlinks WHERE mainkat = '" & strkat & "' AND"
strSQL = strSQL & "((titel LIKE '%" & Keyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & Keyword & "%'))"
Set objRs = conn.execute(strSQL)

end if
Avatar billede Slettet bruger
14. februar 2003 - 02:23 #2
prøver det lige i morgen eagleeye. men sad selv og studsede lidt over det med de 2 or klausuler, men kunne ikke helt lure den :)

men afprøver det som sagt i morgen.
Avatar billede Slettet bruger
14. februar 2003 - 13:46 #3
takker eagleeye :) så virker det, takker for din tid og dit svar
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