Avatar billede pretsmann Nybegynder
03. april 2005 - 16:32 Der 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...
Avatar billede busschou Praktikant
03. april 2005 - 17:14 #1
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 %>
------------
Avatar billede busschou Praktikant
03. april 2005 - 17:18 #2
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>
Avatar billede busschou Praktikant
03. april 2005 - 17:19 #3
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>
Avatar billede busschou Praktikant
03. april 2005 - 17:21 #4
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>
Avatar billede busschou Praktikant
03. april 2005 - 17:22 #5
håber det kan give dig en ide til hvordan det kan gøres :o)
Avatar billede pretsmann Nybegynder
07. april 2005 - 23:07 #6
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:

<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>
                  <option value="2">&nbsp;• Danmark&nbsp;(<%=antal2%>)</option>
                  <option value="3">&nbsp;• Frankrig&nbsp;(<%=antal3%>)</option>
</select>
</form>
Avatar billede busschou Praktikant
07. april 2005 - 23:14 #7
kan du vise mere kode?...
Avatar billede busschou Praktikant
07. april 2005 - 23:19 #8
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 %>
  &nbsp;• Danmark&nbsp;(<%=antal2%>)</option>
  <% if request.form("Keyword1") == 3 then %>
  <option selected value="3">
  <% else %>
  <option value="3">
  <% end if %>
  &nbsp;• Frankrig&nbsp;(<%=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...
Avatar billede pretsmann Nybegynder
07. april 2005 - 23:22 #9
Ja dette er hele siden:

<% ' 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 %>



<html>

<head>

</head>

<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">

<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="770" id="AutoNumber1">
  <tr>
    <td width="770" align="center" height="5" bgcolor="#FFFFFF" colspan="3"></td>
  </tr>
  <tr>
    <td width="180" style="border-bottom: 1px solid #000000">
 
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="180" id="AutoNumber1">
  <tr>
    <td width="190" align="center" height="25" bgcolor="#FDE304">
</td>
  </tr>
</table>

    </td>

    <td width="590" style="border-bottom: 1px solid #000000" align="center">

<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="550" id="AutoNumber1">
<form method="POST" action="viskvik_feriebolig.asp">
  <tr>
    <td width="470" height="25">

<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>
                  <option value="2">&nbsp;• Danmark&nbsp;(<%=antal2%>)</option>
                  <option value="3">&nbsp;• Frankrig&nbsp;(<%=antal3%>)</option>
</select>&nbsp;

    </td>
    <td width="250" align="right" height="25">
    <input type="submit" name="Submit" value="SØG NU" style="font-family: Verdana; font-size: 8 pt; height: 19; width:225; float:right; font-weight:bold"></td>
  </tr>
</form>
</table>

    </td>
  </tr>
</table>
</body>

</html>
Avatar billede pretsmann Nybegynder
07. april 2005 - 23:27 #10
Ja der er godt nok en 30 stykker :-)
Avatar billede busschou Praktikant
07. april 2005 - 23:31 #11
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?
Avatar billede pretsmann Nybegynder
07. april 2005 - 23:47 #12
Ja der er godt og vel 30 lande, grunden til der kun er de 2 er at jeg ikke har tastet de sidste ind - ville lige prøve om det virkede først...

Submit knappen er vist bare ikke blevet fjernet endnu (har rodet lidt rundt i det)
Avatar billede pretsmann Nybegynder
07. april 2005 - 23:48 #13
men takker for hjælpen busschou ...
Avatar billede busschou Praktikant
07. april 2005 - 23:57 #14
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
Avatar billede busschou Praktikant
08. april 2005 - 00:03 #15
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)
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