03. april 2005 - 16:32Der er
14 kommentarer og 1 løsning
Søgning i tabel fra dropdown
Hej
Jeg skal have lavet en søgefunktion (Access db) hvor man eks. vælger et land i en dropdownliste, når man har valgt eks. Danmark skal de forskellige amter så komme i en ny dropdownliste (skulle gerne virke uden man skal trykke på en søgeknap).
Jeg er ikke helt klar over hvordan dette skal gøres så jeg håber her er en som muligvis kunne give mig et eksempel eller hjælp...
Du kan lave din drop down med lande i en form som autosubmitter til siden selv ala ------------------- <form ation="this.asp" method="post"> <select name="lande" size="1" onchange="this.form.submit();"> <option..... ------------------- ved siden af den form laver du så en test på om den er submittet ala <% if request.form("lande") <> "" then %> <form ation="this.asp" method="post"> <select name="amter" size="1" onchange="this.form.submit();"> <option..... <% end if %> ------------
så den første form bliver noget ala ----------------- <% strSql = "Select * From lande" set rs=Conn.execute(strSql)%> <form ation="this.asp" method="post"> <select name="lande" size="1" onchange="this.form.submit();"> <%Do While not rs.eof%> <option value="<%=rs("land")%>"><%=rs("land")%></option> <%rs.MoveNext loop %> </select> </form>
og den anden form noget ala -------------- ----------------- <% if request.form("lande") <> "" then strSql = "Select * From amter Where land='"&request.form("lande") set rs=Conn.execute(strSql)%> <form ation="this.asp" method="post"> <select name="amter" size="1" onchange="this.form.submit();"> <%Do While not rs.eof%> <option value="<%=rs("amt")%>"><%=rs("amt")%></option> <%rs.MoveNext loop %> </select> </form>
hvis du ønsker den skal bibeholde landenavnet så skal den første ændre til ----------------- <% strSql = "Select * From lande" set rs=Conn.execute(strSql)%> <form ation="this.asp" method="post"> <select name="lande" size="1" onchange="this.form.submit();"> <%Do While not rs.eof if rs("land") = request.form("lande") then%> <option selected value="<%=rs("land")%>"><%=rs("land")%></option> <% else %> <option value="<%=rs("land")%>"><%=rs("land")%></option> <% end if rs.MoveNext loop %> </select> </form>
Ja det kunne være fedt hvis man kunne få det land man har søgt på til at blive stående... Men jeg kan ikke helt få det til at virke, min liste ser således ud:
ellers hvis du ikke har flere lande så prøv med: -------------- <form method="POST" action="viskvik_feriebolig.asp">
<select name="Keyword1" style="font-family: Verdana; font-size: 8 pt; height: 15; width:325" onchange="this.form.submit()";> <option value="">Vælg et land på listen</option> <% if request.form("Keyword1") == 2 then %> <option selected value="2"> <% else %> <option value="2"> <% end if %> • Danmark (<%=antal2%>)</option> <% if request.form("Keyword1") == 3 then %> <option selected value="3"> <% else %> <option value="3"> <% end if %> • Frankrig (<%=antal3%>)</option> </select> </form> ----------------- Det er ikke så pænt og nok ikke en særlig fornuftig/pæn løsning hvis du hiver en masse lande ud af en database...
<% ' Skaber forbindelse til DBen Set Conn = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("..\database\feriebolig.mdb") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};"&DBPath %>
<% 'Tæller antallet af boliger i Danmark set count = Conn.Execute("select count(*) as antal2 from beskrivelse where brugerLand = 2") antal2 = count("antal2") count.close set count = nothing %>
<% 'Tæller antallet af boliger i Frankrig set count = Conn.Execute("select count(*) as antal3 from beskrivelse where brugerLand = 3") antal3 = count("antal3") count.close set count = nothing %>
ok er et par ting jeg ikke er helt med på som jeg er nysgerrig for :o) Har du flere lande end de to? Og hvorfor har du lavet en submit knap når formen autosubmitter ved valg?
Jeg er ikke 100% på syntaksen men så vil jeg foreslå dig at lave en sql som tager det hele frem for 30 sql. For det vil også gøre det mere dynamisk overfor nye lande. Noget ala strSQL = "select brugerLand,count(1) as antal From beskrivelse Group By brugerLand Order By BrugerLand" set rs = Conn.execute strSQL --- Så burde du kunne lave en while løkke som løber rs igennem for at finde landenummer samt antallet
Så burde du kunne lave noget ala: ---------- landeNavne = Array(,,"Danmark","Frankrig")
<select name="Keyword1" style="font-family: Verdana; font-size: 8 pt; height: 15; width:325" onchange="this.form.submit()";> <option value="">Vælg et land på listen</option> do while not rs.eof <% if request.form("Keyword1") = rs("brugerLand") then %> <option selected value="<%=rs("brugerLand")%>"> <% else %> <option value="<%=rs("brugerLand")%>"> <% end if %> <%=landeNavne(rs("brugerLand"))&" "&rs("antal")%> </select> rs.movenext loop ---------- bare en ide selvom du har svaret :o)
Synes godt om
Ny brugerNybegynder
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.