Avatar billede ahjdp1 Nybegynder
30. januar 2004 - 22:20 Der er 7 kommentarer og
1 løsning

Hvis formularen er tom skal der gøres noget

Hvordan kan jeg gøre sådant at hvis brugeren ikke har indtastet noget som helst i alle felterne skriver jeg noget til brugeren i en response.write?

Min kode ser således ud:

strSQL = "Select * From huse Where "
    If Request("omraade") <> "" Then strSQL = strSQL & " omraade = " & Request("omraade") & " AND"
    If Request("personer") <> "" Then strSQL = strSQL & " personer = " & Request("personer") & " AND"
    If Request("soverum") <> "" Then strSQL = strSQL & " soverum = " & Request("soverum") & " AND"
    If Request("pool") <> "" Then strSQL = strSQL & " pool = " & Request("pool") & " AND"
    If Request("spa") <> "" Then strSQL = strSQL & " spa = " & Request("spa") & " AND"
    If Request("sauna") <> "" Then strSQL = strSQL & " sauna = " & Request("sauna") & " AND"
    If Request("husdyr") <> "" Then strSQL = strSQL & " husdyr = " & Request("husdyr") & " AND"
    If Request("tv") <> "" Then strSQL = strSQL & " tv = " & Request("tv") & " AND"
    If Request("parabol") <> "" Then strSQL = strSQL & " parabol = " & Request("parabol") & " AND"
    If Request("havudsigt") <> "" Then strSQL = strSQL & " havudsigt = " & Request("havudsigt") & " AND"
    If Request("vaskemaskine") <> "" Then strSQL = strSQL & " vaskemaskine = " & Request("vaskemaskine") & " AND"
    If Request("opvaskemaskine") <> "" Then strSQL = strSQL & " opvaskemaskine = " & Request("opvaskemaskine") & " AND"
    If Request("braendeovn") <> "" Then strSQL = strSQL & " braendeovn = " & Request("braendeovn") & " AND"
    If Request("tv") <> "" Then strSQL = strSQL & " tv = " & Request("tv") & " AND"
    If Request("parabol") <> "" Then strSQL = strSQL & " parabol = " & Request("parabol") & " AND"
    ' slet evt. overskudende "AND" i strSQL strengen:
    If Right(strSQL,3) = "AND" Then strSQL = Left( strSQL, (Len(strSQL)-3) )
    Set rs = Conn.Execute(strSQL)
        if rs.eof then
            Response.Write "<p class=""error"">Der blev desværre ikke fundet nogle huse på din søgning</p><p><a href=""java script:history.back()""><-- Søg igen</a></p>"
        else
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:23 #1
Skal mindst et felt være udfyldt?
Eller skal alle felter være udfyldt?
Avatar billede ahjdp1 Nybegynder
30. januar 2004 - 22:26 #2
man behøver ikke udfylde nogen som helst felter, så skal den bare trække alle poster ud af tabellen
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:29 #3
Ok så ville jeg lave det sådan at man skriver en SQL:

SQL = "SELCT * FROM huse "
..
.. din kode med if sætningerne
..

indsæt denne linjer lige før: Set rs = Conn.Execute(strSQL)

if strSQL <> "" then SQL = SQL & " WHERE " & strSQL


og rette denne:
Set rs = Conn.Execute(strSQL)

Til:
Set rs = Conn.Execute(SQL)
Avatar billede ahjdp1 Nybegynder
30. januar 2004 - 22:34 #4
Det virker ikke rigtig, hvad skal jeg skrive i forbindelse med

then SQL = SQL & " WHERE " & strSQL

Den kommer med flg. fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error. in query expression 'Select * From huse Where'.
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:37 #5
Lad mig prøve at vise det med din kode:


    SQL = "Select * From huse "
    strSQL = "" 'indeholder where delen
    If Request("omraade") <> "" Then strSQL = strSQL & " omraade = " & Request("omraade") & " AND"
    If Request("personer") <> "" Then strSQL = strSQL & " personer = " & Request("personer") & " AND"
    If Request("soverum") <> "" Then strSQL = strSQL & " soverum = " & Request("soverum") & " AND"
    If Request("pool") <> "" Then strSQL = strSQL & " pool = " & Request("pool") & " AND"
    If Request("spa") <> "" Then strSQL = strSQL & " spa = " & Request("spa") & " AND"
    If Request("sauna") <> "" Then strSQL = strSQL & " sauna = " & Request("sauna") & " AND"
    If Request("husdyr") <> "" Then strSQL = strSQL & " husdyr = " & Request("husdyr") & " AND"
    If Request("tv") <> "" Then strSQL = strSQL & " tv = " & Request("tv") & " AND"
    If Request("parabol") <> "" Then strSQL = strSQL & " parabol = " & Request("parabol") & " AND"
    If Request("havudsigt") <> "" Then strSQL = strSQL & " havudsigt = " & Request("havudsigt") & " AND"
    If Request("vaskemaskine") <> "" Then strSQL = strSQL & " vaskemaskine = " & Request("vaskemaskine") & " AND"
    If Request("opvaskemaskine") <> "" Then strSQL = strSQL & " opvaskemaskine = " & Request("opvaskemaskine") & " AND"
    If Request("braendeovn") <> "" Then strSQL = strSQL & " braendeovn = " & Request("braendeovn") & " AND"
    If Request("tv") <> "" Then strSQL = strSQL & " tv = " & Request("tv") & " AND"
    If Request("parabol") <> "" Then strSQL = strSQL & " parabol = " & Request("parabol") & " AND"
    ' slet evt. overskudende "AND" i strSQL strengen:
    If Right(strSQL,3) = "AND" Then strSQL = Left( strSQL, (Len(strSQL)-3) )

    'Hvis strSQL ikke er tom indsæt WHERE i SQL sætning:
    if strSQL <> "" then SQL = SQL & " WHERE " & strSQL
    Set rs = Conn.Execute(SQL)
Avatar billede ahjdp1 Nybegynder
30. januar 2004 - 22:39 #6
halli halli hallo --- det virker bare perfekt, tusind tak for hjælpen. Kan du ikke lige svare?
Avatar billede eagleeye Praktikant
30. januar 2004 - 22:40 #7
Ok det kan jeg da ;)
Avatar billede nute Nybegynder
30. januar 2004 - 22:46 #8
hmm ... det ser også ud til at din SQLopbygning kan laves lidt "smart":

Dim SQL : SQL = "Select * From huse "
Dim SQLAddon : SQLAddon = ""
Dim bFirstIteration : bFirstIteration = true
' bruges "GET" som action, skal man bruge 'Request.Querystring'
' bruges "POST" som action, skal man bruge 'Request.FORM'
if( Request.QueryString.Count > 0 ) then
    for each item in Request.Form
        if( bfirstIteration ) then
            SQLAddon = SQLAddon & " WHERE "
        end if
        if( LEN( SQLAddon ) > 0 ) then
            SQLAddon = SQLAddon & " AND "
        end if
        if( LEN( Request( item ) ) > 0 = then
            SQLAddon = SQLAddon & item & " = '" & Request( item ) & "'"
        end if
    next
   
    if( LEN( SQLAddon ) = 0 ) then
        Response.Write( "hmm ... skriv noget" );
    end if
end if

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