Avatar billede ndh Nybegynder
19. oktober 2001 - 11:06 Der er 16 kommentarer og
1 løsning

Checkbox og db-søgning

I min søgeformular indgår der udover en række tekst-søgefelter også en checkbox (name=billede). Ideen med denne checkbox er, at hvis den er afkrydset skal den udover de poster, som passer med kriterierne der er indtastet i tekst-felterne også udvælge alle posterne med en værdi i feltet (1thumb) fra en access db.

Koden ser således ud:
strSQL = \"SELECT * FROM Torvegade WHERE\"
strSQL = strSQL & \" ((beskrivelse LIKE \'%\" & strbeskrivhistorie & \"%\')\"
strSQL = strSQL & \" OR (bygningshistorie LIKE \'%\" & strbeskrivhistorie & \"%\'))\"


If Len(strgadevej) > 0 Then
strSQL = strSQL & \" AND (gadevej LIKE \'%\" & strgadevej & \"%\')\"
End if


\' kode for checkbox
If Request.Form(\"billede\") > 0 then
strSQL = strSQL & \"(1thumb LIKE \'%\" strbillede \"%\')\"
End if

Det sidste sætning ser forkert ud Hvad gør jeg galt???
Avatar billede Søren Bech Morsing Praktikant
19. oktober 2001 - 11:07 #1
Request.Form(\"billede\")

er det ikke en checkbox?
lad den sende value=\"true\" med og tjeck så på om den er = \"true\"
Avatar billede Søren Bech Morsing Praktikant
19. oktober 2001 - 11:08 #2
Hov... det er forresten vidst ikke 300 point værd...
Avatar billede ndh Nybegynder
19. oktober 2001 - 11:08 #3
Prøv at uddyb!
Avatar billede Søren Bech Morsing Praktikant
19. oktober 2001 - 11:10 #4
Du skriver din checkbox hedder billede.

Den checkbox har også en value - Sæt denne til true

Og tjeck så i din if (Request.Form(\"billede\") = \"true\" then

så skulle det virke
Avatar billede ndh Nybegynder
19. oktober 2001 - 11:22 #5
Det gør ingen forskel. Når jeg krydser Checkbox-feltet af vælger den alle poster i databasen.


KAn det ikke være denne sætning der er forkert?
strSQL = strSQL & \"(1thumb LIKE \'%\" & strbillede & \"%\')\"

Eller måske henter jeg værdien fra formularen forkert. Koden der henter værdien fra Checkbox ser således ud:

strbillede = Request.form(\"billede\")
strbillede = Replace(strbillede,\"\'\",\"\'\'\")
Avatar billede Søren Bech Morsing Praktikant
19. oktober 2001 - 11:33 #6
Nåhh.. det er da fordi du så skal navngive billede checkboxen fx name=\"checkbox<%=rs(\"billedeid\")%>\"

Så skal du når du vil indsætte/eller opdatere, køre den samme sql sætning og køre alle poster igennem igen, og tjecke på om Request.Form(\"checkbox\"&rs(\"billedeid\")) = \"true\"
Avatar billede ndh Nybegynder
19. oktober 2001 - 11:35 #7
Prøv at uddyb.
Hvad m. strSQL = strSQL & \"(1thumb LIKE \'%\" & strbillede & \"%\')\" -sætningen?
Avatar billede Søren Bech Morsing Praktikant
19. oktober 2001 - 11:43 #8
OK.. jeg tror jeg har misforstået.

Kan jeg se et eksempel på nettet?

Har du en side hvor du kan søge?
Og her kan man så sætte et kryds hvis den skal finde alle billeder hvor værdien af 1thumb er større end \"\"?

Du skal først sikre dig at defualt værdi for dine felter i Access databasen er \"\" for feltet 1thumb
Avatar billede ndh Nybegynder
19. oktober 2001 - 11:52 #9
Desværre kan du endnu ikke se et eksempel på nettet. Men jeg kan sende hele koden.

Ideen med Checkbox-feltet er, at når det er afkrydset skal den fremfinde alle poster i db´en, hvor der er tilknyttet billeder. Hvorfor skal default-værdien i feltet 1thumb sættes til \"\" er det ikke nok, at feltet blot er tomt de steder hvor der ikke er knyttet billeder?

koden:

<%
Dim Strgadevej
Dim Strgadevejnummer
Dim Strejerlav
Dim Strmatrikelnummer
Dim Strhusnavn
Dim Strbeskrivhistorie
Dim Strforhus
Dim Strbaghus
Dim Strbygherre
Dim Strarkitekt
Dim Strtomrermester
Dim strmurermester
dim    strbillede
dim strtom


strgadevej = Request.querystring(\"gadevej\")
strgadevejnummer = Request.querystring(\"gadevejnummer\")
strejerlav = Request.querystring(\"ejerlav\")
strmatrikelnummer = Request.querystring(\"matrikelnummer\")
strhusnavn = Request.querystring(\"husnavn\")
strbeskrivhistorie = Request.querystring(\"beskrivhistorie\")
strforhus = Request.querystring(\"forhus\")
strbaghus = Request.querystring(\"baghus\")
strbygherre = Request.querystring(\"bygherre\")
strarkitekt = Request.querystring(\"arkitekt\")
strtomrermester = Request.querystring(\"tomrermester\")
strmurermester = Request.querystring(\"murermester\")
strbillede = Request.form(\"billede\")


\' strtom = StrKeyword + StrKeyword1 + StrKeyword2 + StrKeyword3 + StrKeyword4 + StrKeyword5 + StrKeyword6 + StrKeyword7 + StrKeyword8 + StrKeyword9

\' If Len(strtom) = 0 Then

\' Response.Clear
\' Response.Redirect(\"byggesogavan.htm\")
\' Else
strgadevej = Replace(strgadevej,\"\'\",\"\'\'\")
strgadevejnummer = Replace(strgadevejnummer,\"\'\",\"\'\'\")
strejerlav = Replace(strejerlav,\"\'\",\"\'\'\")
strmatrikelnummer = Replace(strmatrikelnummer,\"\'\",\"\'\'\")
strhusnavn = Replace(strhusnavn,\"\'\",\"\'\'\")
strstrbeskrivhistorie = Replace(strbeskrivhistorie,\"\'\",\"\'\'\")
strforhus = Replace(strforhus,\"\'\",\"\'\'\")
strbaghus = Replace(strbaghus,\"\'\",\"\'\'\")
strbygherre = Replace(strbygherre,\"\'\",\"\'\'\")
strarkitekt = Replace(strarkitekt,\"\'\",\"\'\'\")
strtomrermester = Replace(strtomrermester,\"\'\",\"\'\'\")
strmurermester = Replace(strmurermester,\"\'\",\"\'\'\")
strbillede = Replace(strbillede,\"\'\",\"\'\'\")



\' End If

intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM Torvegade WHERE\"
strSQL = strSQL & \" ((beskrivelse LIKE \'%\" & strbeskrivhistorie & \"%\')\"
strSQL = strSQL & \" OR (bygningshistorie LIKE \'%\" & strbeskrivhistorie & \"%\'))\"


If Len(strgadevej) > 0 Then
strSQL = strSQL & \" AND (gadevej LIKE \'%\" & strgadevej & \"%\')\"
End if

If Len(strgadevejnummer) > 0 Then
strSQL = strSQL & \" AND (gadevejnummer LIKE \'%\" & strgadevejnummer & \"%\')\"
End if

If Len(strejerlav) > 0 Then
strSQL = strSQL & \" AND (ejerlav LIKE \'%\" & strejerlav & \"%\')\"
End if

If Len(strmatrikelnummer) > 0 Then
strSQL = strSQL & \" AND (matrikelnummer LIKE \'%\" & strmatrikelnummer & \"%\')\"
End if

If Len(strhusnavn) > 0 Then
strSQL = strSQL & \" AND (husnavn LIKE \'%\" & strhusnavn & \"%\')\"
End if

If Len(strforhus) > 0 Then
strSQL = strSQL & \" AND (forhus Like \'\" & strforhus & \"\')\"
End if

If Len(strbaghus) > 0 Then
strSQL = strSQL & \" AND (baghus LIKE \'%\" & strbaghus & \"%\')\"
End if

If Len(strbygherre) > 0 Then
strSQL = strSQL & \" AND (bygherre LIKE \'%\" & strbygherre & \"%\')\"
End if

If Len(strarkitekt) > 0 Then
strSQL = strSQL & \" AND (Arkitekt LIKE \'%\" & strarkitekt & \"%\')\"
End if

If Len(strtomrermester) > 0 Then
strSQL = strSQL & \" AND (tomrermester LIKE \'%\" & strtomrermester & \"%\')\"
End if

If Len(strmurermester) > 0 Then
strSQL = strSQL & \" AND (murermester LIKE \'%\" & strmurermester & \"%\')\"
End if

If Request.Form(\"billede\") = \"true\" then
strSQL = strSQL & \"(1thumb LIKE \'%\" & strbillede & \"%\')\"
End if

strSQL = strSQL & \"ORDER BY Gadevej, Gadevejnummer\"



strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"torvegade.mdb\")


rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 5
intRecCount = rs.PageSize
intPageCount = rs.PageCount
intPage = Request.querystring(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
count = 1
intPage = 1
else
count = ((intPage - 1) * rs.PageSize) + 1
End If
rs.AbsolutePage = intPage



AntalP = rs.RecordCount


If AntalP = 1 then
Response.write \"<p><b><font color=#000000 font face=Trebuchet MS size=2>Din søgning resulterede i \" & AntalP & \" bygninger<br></b></p>\"
End if
If AntalP > 1 then
Response.write \"<p><b><font color=#000000 font face=Trebuchet MS size=2>Din søgning resulterede i \" & AntalP & \" bygninger<br></b></p>\"
End if
If AntalP > 5 then
Response.Write \"<p><b><font color=#000000 font face=Trebuchet MS size=2>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\"
End if
Do While Not rs.EOF And intRecCount > 0

Response.Write \"<b><font face=\'Trebuchet MS\' size=\'3\' color=\'#000000\'>\" & count & \". </font></b><br>\"
If len(rs(\"husnavn\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Husnavn:  </b>\" & rs(\"husnavn\") & \"</font>&nbsp;&nbsp;\"
end if
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Gade/nr.:  </b>\" & rs(\"gadevej\") & \" \" & rs(\"gadevejnummer\") &\"</font><br>\"

Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Ejerlav:  </b>\" & rs(\"ejerlav\") & \"</font>&nbsp;&nbsp;\"

Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Matrikelnummer:  </b>\" & rs(\"matrikelnummer\") & \"</font><br>\"

Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Bygningsbeskrivelse:  </b><br>\" & rs(\"beskrivelse\") & \"</font><br>\"

If len(rs(\"bygningshistorie\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Bygningshistorie:  </b><br>\" & rs(\"bygningshistorie\") & \"</font><br>\"
End if

If len(rs(\"bemaerkninger\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Bemærkninger:  </b><br>\" & rs(\"bemaerkninger\") & \"</font></b><br>\"
End if

Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Forhus opført:  </b>\" & rs(\"forhusopfort\") & \"</font></b>&nbsp;\"

If len(rs(\"baghusopfort\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Baghus opført:  </b>\" & rs(\"baghusopfort\") & \"</font></b><br>\"
Else


response.write \"<br>\"
end if
If len(rs(\"bygherre\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Bygherre:  </b>\" & rs(\"bygherre\") & \"</b><br>\"
End if

If len(rs(\"arkitekt\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Arkitekt:  </b>\" & rs(\"arkitekt\") & \"</b><br>\"
End if

If len(rs(\"tomrermester\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Tømrermester:  </b>\" & rs(\"tomrermester\") & \"</b>&nbsp;&nbsp;\"
End if

If len(rs(\"murermester\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Murermester:  </b>\" & rs(\"murermester\") & \"</b><br>\"
End if

If len(rs(\"anvendelse1\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Anvendelse 1:  </b>\" & rs(\"anvendelse1\") & \"</b><br>\"

End if
If len(rs(\"anvendelse2\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Anvendelse 2:  </b>\" & rs(\"anvendelse2\") & \"</b><br>\"

End if

If len(rs(\"anvendelse3\")) > 0 Then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Anvendelse 3:  </b>\" & rs(\"anvendelse3\") & \"</b><br>\"
end if
Response.write \"<font color=#000000 font face=Trebuchet MS size=2><b>Se hvilke personer der iflg. Borgerdatabasen har boet i bygningen:</b>&nbsp;\"
Response.write \"<a href=\'Borgerdatabase1899.asp?id=\" & rs(\"gadevej\") & \"&id1=\" & rs(\"gadevejnummer\") & \"\' target=\'_blank\'><b><font face=\'Trebuchet\' size=\'2\' color=\'#000000\'>1899\" & \"</font></a></b>&nbsp;&nbsp;\"
Response.write \"<a href=\'Borgerdatabase1904.asp?id=\" & rs(\"gadevej\") & \"&id1=\" & rs(\"gadevejnummer\") & \"\' target=\'_blank\'><b><font face=\'Trebuchet\' size=\'2\' color=\'#000000\'>1904\" & \"</font></a></b><br><br><br>\"
If len(rs(\"1thumb\")) > 0 then
%>
      <p><a
        href=\"fuld.asp?id=<%= RS(\"ID\")%> & \"\' target=\'_blank\' \"><font size=\"1\"
        face=\"Tahoma\"><img src=\"<%= RS(\"1Thumb\")%>\"></font></a>
        <%
end if
If len(rs(\"2thumb\")) > 0 then
%>
        <a
        href=\"fuld2.asp?id=<%= RS(\"ID\")%> & \"\' target=\'_blank\' \"><font size=\"1\"
        face=\"Tahoma\"><img src=\"<%= RS(\"2Thumb\")%>\"></font></a></p>
      <p>
        <%
end if

intRecCount = intRecCount - 1
rs.MoveNext
count=count+1
Loop
\' Else
End if
if rs.recordcount = 0 then
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Der er ikke fundet nogle borgere, der matcher din søgning\"
ELse
\' End If
rs.Close
Set rs = Nothing
If AntalP > 5 then
Response.Write \"<p>Gå til side \"
For intNum = 1 To intPageCount

Response.Write \"<a href=byggeresultat.asp?artal=\" & strartal & \"&Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intNum & \">\" & intNum & \"</a> \"
Next
Response.Write \"<p>\"
If Clng(intPage) > 1 Then
Response.Write \"<a href=byggeresultat.asp?artal=\" & strartal & \"&Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intPage - 1 & \">&lt;&lt;</a>\"
Else
Response.Write \"&lt;&lt;\"
End If
Response.Write \"&nbsp;\"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write \"<a href=byggeresultat.asp?artal=\" & strartal & \"&Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intPage + 1 & \">&gt;&gt;</a>\"
Else
Response.Write \"&gt;&gt;\"
End If
End if
End if
%>
Avatar billede eagleeye Praktikant
19. oktober 2001 - 12:10 #10
Du skal også havde havde OR ind i din SQL sætning ved lthumb. Jo det er nok om feltet er tomt:

strSQL = strSQL & \" OR (1thumb <> null)\"

Så skal du bafe havde et fast navn på din checkbox eksvis billede og value til true

if request.Form(\"billede\") = true then
  strSQL = strSQL & \" OR (1thumb <> null)\"
end if

Den medtager alle post hvor der er et noget i feltet lthumb
Avatar billede eagleeye Praktikant
19. oktober 2001 - 12:12 #11
hvis du vil kan du evt lavet det sådan at man tjekker på om der er et \".\" i teksen i lthumb for lthumb = \"\" er ikke det samme som lthumb = null.
og hvis lthumb er en stil til billedet er er altid \".\" i..

Så blvier SQL\'en:
strSQL = strSQL & \" OR (1thumb LIKE \'%.%\')\"
Avatar billede ndh Nybegynder
19. oktober 2001 - 12:45 #12
if request.Form(\"billede\") = true then
  strSQL = strSQL & \" OR (1thumb <> null)\"
end if
Disse sætninger ser mere rigtige ud. Men hvad med
strbillede = Request.form(\"billede\")
strbillede = Replace(strbillede,\"\'\",\"\'\'\")
sætningerne øverst i min kode. Skal de ændres for nu får jeg fejlen:

Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e21\'

ODBC-driver understøtter ikke de ønskede egenskaber.

/byggeresultat1.asp, linje 243
Avatar billede eagleeye Praktikant
19. oktober 2001 - 18:43 #13
lige umiddelbart har du ikke brug for:
strbillede = Request.form(\"billede\")
strbillede = Replace(strbillede,\"\'\",\"\'\'\")
Det er jo en checkbox.

Hvad er der i linie 243?
Avatar billede ndh Nybegynder
23. oktober 2001 - 11:07 #14
Jeg har fundet ud af at et af problemerne har været, at min billedfelt i db´en skulle hedde thumb og ikke 1thumb. Koden kan åbenbart ikke forstå det, når der bruges et 1- tal.

Men hvorfor fungerer denne IF-sætning ikke??

if request.form(\"thumb\") = true then

Er det fordi jeg bruger GET-metoden eller hvad. Gerne hurtigt svar?
jeg forhøjer pointantallet
Avatar billede eagleeye Praktikant
23. oktober 2001 - 11:11 #15
hvis value  på checkbox er sat til true bliver det overført som tekst.

if request.form(\"thumb\") = \"true\" then
Avatar billede eagleeye Praktikant
23. oktober 2001 - 11:20 #16
med GET

if request(\"thumb\") = true then 

eller

if request(\"thumb\") = \"true\" then 
Avatar billede ndh Nybegynder
23. oktober 2001 - 12:12 #17
Tak for hurtigt svar eagleeye!!
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