Avatar billede jnissen Nybegynder
13. marts 2002 - 10:31 Der er 19 kommentarer og
2 løsninger

Dropdown indhold fra db

Hejsa.

Jeg vil gerne have en dropdown box, som henter fra en db.
I tabellen i databasen har jeg 2 kolonner: ’afdeling’ og ’hold’. Så skal det være sådan, at når du går ind på side.asp?afdeling=fodbold, så skal den hente de hold som har fodbold som afdeling. Men hvert hold må kun være der én gang, selvom det står flere gange i databasen. Så skal det være sådan at når du vælger et hold, skal du komme til: side.asp?afdeling=fodbold?hold=oldboys, der skal den så liste alle de poster som har oldboys som holdet.

Er det forståeligt, og er der nogen som kan hjælpe mig med det?
Avatar billede medions Nybegynder
13. marts 2002 - 10:35 #1
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb")

SQL = "SELECT * FROM tabel"
Set rs = Conn.Execute(SQL)
%>

<select name="seletbox">
<% While Not rs.EOF %>
<option><%= rs("den kollonne du vilha udskrevet") %></option>
<% rs.MoveNext %>
<% Wend %>
</select>

Håber det var svar nok!
//>
Avatar billede medions Nybegynder
13. marts 2002 - 10:37 #2
og så for at sotere efter ID skriver definere du en ID hvor du kan adskille dem fra hinanden i din SQL statement! fx.
SQL = "SELECT * FROM tabel WHERE id=1"

//>Rune
Avatar billede Jman Praktikant
13. marts 2002 - 10:39 #3
Prøv at se denne:
http://www.viewsource.dk/cat.asp?ident=js&catID=3

-> vælg autodropdown
Avatar billede coltau Juniormester
13. marts 2002 - 11:43 #4
Her er en og samme asp-kode som kan begge dele. Skal kaldes med side.asp?afdeling=???. Derefter fremkommer en ComboBox med alle hold i denne afdeling. Når man så vælger en af dem kalder siden sig selv og viser alle poster med valgte hold. Er det rigtigt forstået.

Du skal selvfølgelig ændre tabelnavn og connection-string mv.

<% ' side.asp?afdeling=??
strAfd = Request.QueryString("afdeling")
strHold = Request.Form("hold") ' Hentes fra formen

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("test.mdb") ' HUSK

Response.Write("Afdeling : " ? strAfdeling & "<br>" & vbCrLf)

if strHold = "" then ' --- Vælg hold -------------------------------
  ' Vælg de hold der findes i valgte afdeling
  Set RS = objConn.Execute("select hold from tabelnavn where afdeling=" & strAfdeling & " group by hold") ' HUSK tabelnavn

  Response.Write("<br>" & vbCrLf)
  Response.Write("<form method='post' action='side.asp?afdeling=" & strAfdeling & "'>" & vbCrLf) ' HUSK side.asp skal måske hedde noget andet
  Response.Write("<select size="11" name='Afdeling'>" & vbCrLf)
  while not RS.EOF do
    Response.Write "<option value='" & RS("hold") & "'>'" & RS("hold") & "'</option>"  & VbCrLf
    RS.MoveNext
  loop
  Response.Write("</select>" & vbCrLf)
else ' --- Vis hold --------------------------------
  Response.Write("Hold    : " ? strHold & "<br><br>" & vbCrLf)
  ' Vælg alle poster med valgte hold i valgte afdeling
  Set RS = objConn.Execute("select * from tabelnavn where afdeling=" & strAfdeling & " and hold=" & strHold)' HUSK tabelnavn
  while not RS.EOF do
    Response.Write "RS("hold") & "<br>"  & VbCrLf
    RS.MoveNext
  loop
end if
RS.Close
%>

Samtidig kan der jo være lidt syntax-fejl. :-)
Avatar billede jmarkling Nybegynder
13. marts 2002 - 13:59 #5
Bruger du VB eller Javascript til dit ASP?
Avatar billede jnissen Nybegynder
13. marts 2002 - 14:12 #6
coltau -> jeg får desværre en fejl:
Microsoft VBScript compilation error '800a03fa'

Expected 'Wend'

/kamp.asp, line 22

else ' --- Vis hold --------------------------------
^

Jeg har pøvet lidt forskelligt, men uden held. Hvad kan det være?
Jeg har rettet til de rigtige navne.

jmarkling -> Jeg bruger VB
Avatar billede coltau Juniormester
13. marts 2002 - 14:56 #7
Sorry der skal stå do foran while de to steder. Sådan:

do while not RS.EOF

Husk begge steder.
Avatar billede jnissen Nybegynder
13. marts 2002 - 22:10 #8
coltau ->

Hej igen. Nu kommer der bare en anden fejl :(
Kan du hjælpe med den?

Fejl:
Afdeling :skydning

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/kamp.asp, line 17
Avatar billede coltau Juniormester
13. marts 2002 - 22:16 #9
Jeg havde regnet med et par fejl - da jeg ikke havde mulighed for at teste det - men det vil jeg gøre nu. !
Avatar billede medions Nybegynder
13. marts 2002 - 22:16 #10
<% ' side.asp?afdeling=??
strAfd = Request.QueryString("afdeling")
strHold = Request.Form("hold") ' Hentes fra formen

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("test.mdb") ' HUSK

Response.Write("Afdeling : " ? strAfdeling & "<br>" & vbCrLf)

if strHold = "" then ' --- Vælg hold -------------------------------
  ' Vælg de hold der findes i valgte afdeling
  Set RS = objConn.Execute("select hold from tabelnavn where afdeling='" & strAfdeling & "' group by hold") ' HUSK tabelnavn

  Response.Write("<br>" & vbCrLf)
  Response.Write("<form method='post' action='side.asp?afdeling=" & strAfdeling & "'>" & vbCrLf) ' HUSK side.asp skal måske hedde noget andet
  Response.Write("<select size="11" name='Afdeling'>" & vbCrLf)
  while not RS.EOF do
    Response.Write "<option value='" & RS("hold") & "'>'" & RS("hold") & "'</option>"  & VbCrLf
    RS.MoveNext
  loop
  Response.Write("</select>" & vbCrLf)
else ' --- Vis hold --------------------------------
  Response.Write("Hold    : " ? strHold & "<br><br>" & vbCrLf)
  ' Vælg alle poster med valgte hold i valgte afdeling
  Set RS = objConn.Execute("select * from tabelnavn where afdeling='" & strAfdeling & "' and hold=" & strHold)' HUSK tabelnavn
  while not RS.EOF do
    Response.Write "RS("hold") & "<br>"  & VbCrLf
    RS.MoveNext
  loop
end if
RS.Close
%>
Avatar billede jnissen Nybegynder
13. marts 2002 - 22:21 #11
Nu kommer holdene i boxen, men når du klikeker på dem, sker der ikke noget.
Avatar billede medions Nybegynder
13. marts 2002 - 22:22 #12
Det er fordi du skal lave en OnChange i din select tag og så sætte en funktion i JavaScript der laver den til en submit!

//>Rune
Avatar billede jnissen Nybegynder
13. marts 2002 - 22:26 #13
Jeg har prøvet med denne men den virker ikke.
Hvordan skal den være?

onChange='if (this.selectedIndex > 0) window.open( document.hoppe.dest.options[document.hoppe.dest.selectedIndex].value,'_self'); this.selectedIndex = 0;'
Avatar billede medions Nybegynder
13. marts 2002 - 22:28 #14
En mulighed kunne være at skrive:
<select name="menu1" onChange="MM_jumpMenu('parent',this,0)">

//>Rune
Avatar billede coltau Juniormester
13. marts 2002 - 22:30 #15
Jeg er ked af at jeg ikke her testet det - for der var en held del småting - som jeg kan forstå at du allerede har afluset - men her er en kode der er testet:

<% ' hold.asp?afdeling=??
strAfdeling = Request.QueryString("afdeling")
strHold = Request.Form("hold") ' Hentes fra formen

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("test.mdb") ' HUSK

Response.Write("Afdeling : " & strAfdeling & "<br>" & vbCrLf)

if strHold = "" then ' --- Vælg hold -------------------------------
  ' Vælg de hold der findes i valgte afdeling
  Set RS = objConn.Execute("select hold from tabelnavn where afdeling='" & strAfdeling & "' group by hold") ' HUSK tabelnavn

  Response.Write("<br>" & strHold & vbCrLf)
  Response.Write("<form method='post' action='hold.asp?afdeling=" & strAfdeling & "'>" & vbCrLf) ' HUSK side.asp skal måske hedde noget andet
  Response.Write("<select name='hold'>" & vbCrLf)
  do while not RS.EOF
    Response.Write "<option value='" & RS("hold") & "'>" & RS("hold") & "</option>"  & VbCrLf
    RS.MoveNext
  loop
  Response.Write("</select><br>" & vbCrLf)
  Response.Write("<input type='submit' name='submit'>")
  Response.Write("</form>")
else ' --- Vis hold --------------------------------
  Response.Write("Hold    : " & strHold & "<br><br>" & vbCrLf)
  ' Vælg alle poster med valgte hold i valgte afdeling
  Set RS = objConn.Execute("select * from tabelnavn where afdeling='" & strAfdeling & "' and hold='" & strHold & "'")' HUSK tabelnavn
  do while not RS.EOF
    Response.Write RS("hold") & "<br>"  & VbCrLf
    RS.MoveNext
  loop
end if
RS.Close
%>

Jeg har ændret sidens navn til hold.asp
Jeg håber det kan gå.
Avatar billede jnissen Nybegynder
13. marts 2002 - 22:36 #16
Perfekt. Nu virker den sku. Mange tak.
Er det muligt at dropdownboxen bliver øverst på siden?
Avatar billede coltau Juniormester
13. marts 2002 - 22:41 #17
Jeg fixer li'.
Avatar billede jnissen Nybegynder
13. marts 2002 - 22:42 #18
Kanon...
Avatar billede coltau Juniormester
13. marts 2002 - 22:46 #19
Det kan jo nok laves lidt flottere - men det håbder jeg du selv fixer. ?

Her vises comboxen altid:

<% ' hold.asp?afdeling=??
strAfdeling = Request.QueryString("afdeling")
strHold = Request.Form("hold") ' Hentes fra formen

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("test.mdb") ' HUSK

Response.Write("Afdeling : " & strAfdeling & "<br>" & vbCrLf)

' Vælg de hold der findes i valgte afdeling
  Set RS = objConn.Execute("select hold from tabelnavn where afdeling='" & strAfdeling & "' group by hold") ' HUSK tabelnavn

  Response.Write("<br>" & vbCrLf)
  Response.Write("<form method='post' action='hold.asp?afdeling=" & strAfdeling & "'>" & vbCrLf) ' HUSK side.asp skal måske hedde noget andet
  Response.Write("<select name='hold'>" & vbCrLf)
  do while not RS.EOF
    Response.Write "<option value='" & RS("hold") & "'>" & RS("hold") & "</option>"  & VbCrLf
    RS.MoveNext
  loop
  Response.Write("</select><br>" & vbCrLf)
  Response.Write("<input type='submit' name='submit' value='Vis hold'>")
  Response.Write("</form>")
  Response.Write("<br>" & vbCrLF)

if strHold <> "" then
  ' Vis alle poster med valgte hold i valgte afdeling
  Response.Write("Hold    : " & strHold & "<br><br>" & vbCrLf)
  Set RS = objConn.Execute("select * from tabelnavn where afdeling='" & strAfdeling & "' and hold='" & strHold & "'")' HUSK tabelnavn
  do while not RS.EOF
    Response.Write RS("hold") & "<br>"  & VbCrLf
    RS.MoveNext
  loop
end if
RS.Close
%>
Avatar billede jnissen Nybegynder
13. marts 2002 - 22:50 #20
Jamen, det er jo helt kanon.
Mange tak for hjælpen.
Håber I er tilfreds med pointene.
Avatar billede medions Nybegynder
13. marts 2002 - 22:54 #21
100% tilfeds... -coltua gjorde helt klart den største indsats...!

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