---
title: "Dynamiska <select> med databaskoppling"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/91705-dynamiska-select-med-databaskoppling"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Seiza"
published: "2003-12-02T13:04:02.000Z"
updated: "2003-12-03T12:00:07.000Z"
replies: 21
views: 712
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/91705-dynamiska-select-med-databaskoppling"
---

# Dynamiska <select> med databaskoppling

_Sida 1 av 2._

## #1 — Seiza, 2003-12-02T13:04Z

Hej, som ganska ny inom ASP skulle jag behöva lite hjälp.

Jag försöker skapa två dropdown boxar där valet i den ena styr innehållet i den andra. I box nummer ett läses ett antal värden in från en databas. Om ett värde väljs ska, från samma databas, box nummer två fyllas med värden som är relaterade till box ett. Låter det krångligt? Jag tycker iaf det, men jag måste lösa det på något sätt.

Uppskattar all hjälp jag kan få.

Permalänk: https://www.webforum.nu/p/91705

## #2 — KoTTeN, 2003-12-02T14:24Z

Du får ge varje värde som ska visas i box två någonting att relatera till det värde som finns i box ett. Lämpligt är det nummer du har anget som räknare. Exempelvis skulle du kunna bygga din databas såhär:

```
BoxID - Typ räknare
BoxUnderID - Typ nummer
BoxNamn - Typ Text
```

Sen låter du innehållet i BoxUnderID vara 0 för de som ska hämtas till förstaboxen. Exepel på SQL:

```
SELECT BoxID, BoxNamn FROM Box WHERE BoxUnderID = 0
```

Sedan när det är dags att hämta innehållet till box två tar du med dig BoxID från box nummer ett så du vet vilken kategori du ska hämta ifrån. Exepel på SQL:

```
SELECT BoxID, BoxNamn FROM Box WHERE BoxUnderID = " & BoxID från box ett & "
```

Permalänk: https://www.webforum.nu/p/1219568

## #3 — Seiza, 2003-12-03T08:24Z

Precis så som jag gjort från början men det har inte fungerat tyvärr. Min kod än så länge ser ut som följer:

```
<td>
<%SET rsf = anslutU.Execute("SELECT katID, katnamn FROM Kategori WHERE förälder=0 ORDER BY katnamn asc")%>
Huvudrubrik<br>
<select name="kat">
 <% while not(rsf.EOF) %> 
<option value="<%=rsf("katid")%>"><%=rsf("katnamn")%>
<% rsf.movenext
wend
rsf.Close()
%>
</select>
</td>
<td>
<%
if request.form("kat") <> "" then
SET rsb = anslutU.Execute("SELECT katID, katnamn FROM Kategori WHERE förälder='"&request.form("kat")&"' ORDER BY katnamn asc")
end if
%>
Underrubrik<br>
<select name="kat2">
<% while not(rsb.EOF) %> 
<option value="<%=rsb("katID")%>"><%=rsb("katnamn")%>
<% rsb.movenext
wend
rsb.Close()
%>
</select>
</td>
```

Permalänk: https://www.webforum.nu/p/1219831

## #4 — ekke_t, 2003-12-03T09:28Z

Detta kanske:

```
<select name="kat" onchange="submit();">
```

Permalänk: https://www.webforum.nu/p/1219862

## #5 — Jesper T, 2003-12-03T09:56Z

1\. **Välkommen till WF!**
2\. Vad är det som inte funkar?
3\. Felmeddelande?
4\. Svenska tecken i sql-satsen/databasen är inte att rekommendera.

/r höll på att glömma.

Permalänk: https://www.webforum.nu/p/1219873

## #6 — Seiza, 2003-12-03T10:27Z

1\. Tack! :)
2\. Jag får saker listade i box ett men inte i box 2.
3\. Just nu är det Object required: på line 30 som är:

```
<% while not(rsb.EOF) %>
```

 
4\. Jo jag har förstått det, får ta och ändra det.

Permalänk: https://www.webforum.nu/p/1219895

## #7 — @nders, 2003-12-03T10:30Z

Objektet rsb skapar du ju inne i en if-sats. Dvs, uppfylls inte if-satsen (om request.form("kat") är tom alltså), finns inte objektet, och då kan du inte heller kontrollera någon av dess egenskaper.

Vad vill du ska finnas i den andra selectboxen från början?

(vi börjar där så länge :) )

Mvh

Permalänk: https://www.webforum.nu/p/1219898

## #8 — Seiza, 2003-12-03T10:34Z

Där behöver inte finnas något, skulle eventuellt kunna lägga in en text bara som säger att man måste välja ett värde i box ett först.

Permalänk: https://www.webforum.nu/p/1219900

## #9 — Jesper T, 2003-12-03T10:37Z

1\. Testa @nders förslag. Han är kung
2\. I den första sql-satsen så skriver du: förälder=0.
Är kolumen förälder typen "tal", så kan du kanske testa med att ändra: förälder='"&request.form("kat")&"'
till: förälder="& cInt(request.form("kat")) &"
Alltså utan enkelfnuttar.

/r LarsG är kung, @nders är drottning... :e

Permalänk: https://www.webforum.nu/p/1219901

## #10 — @nders, 2003-12-03T10:39Z

Okej, då gör vi så här till att börja med: 

```
<td>
Underrubrik<br>
<select name="kat2">
<%
if request.form("kat") <> "" then
SET rsb = anslutU.Execute("SELECT katID, katnamn FROM Kategori WHERE förälder='"&request.form("kat")&"' ORDER BY katnamn asc")
%>
<% while not(rsb.EOF) %> 
<option value="<%=rsb("katID")%>"><%=rsb("katnamn")%>
<% rsb.movenext
wend
rsb.Close()
else
    Response.write "<option>Du måste välja något i den första!</option>"
end if
%>
</select>
</td>
```

Du saknar också lite \<form\>-taggar och dylikt utanför dina \<select\>-boxar, men du kanske bara har klippt bort dem här? De taggarna måste finnas med för att du ska kunna posta iväg värdena.

Mvh

Permalänk: https://www.webforum.nu/p/1219902

## #11 — Seiza, 2003-12-03T10:45Z

Det funkar ju bra, men nu ska det bara hända något i den andra när jag trycker på ett värde i den första.

Permalänk: https://www.webforum.nu/p/1219905

## #12 — @nders, 2003-12-03T10:48Z

Jepp, och det är där du behöver form-taggarna. ;)

```
<form method="post">
<select name="kat" onchange="document.forms[0].submit();">
<option></option>
'
'
'
'
</select>
</form>
```

Permalänk: https://www.webforum.nu/p/1219907

## #13 — Seiza, 2003-12-03T10:53Z

Ett litet bekymmer där bara, gör jag som du skrev där laddar den ett annat formulär jag inkluderar i ett tidigare skede. Kan jag ange vilket formulär det handlar om?

Permalänk: https://www.webforum.nu/p/1219916

## #14 — OveRRidE, 2003-12-03T10:55Z

> **Seiza skrev:**
>
> Ett litet bekymmer där bara, gör jag som du skrev där laddar den ett annat formulär jag inkluderar i ett tidigare skede. Kan jag ange vilket formulär det handlar om?

Ja. 

```
<form method="post">
<select name="kat" onchange="document.[b]DittFormNamn[/b].submit();">
<option></option>
'
'
'
'
</select>
</form>
```

eller

```
<form method="post">
<select name="kat" onchange="document.Forms[[b]1[/b]].submit();">
<option></option>
'
'
'
'
</select>
</form>
```

där *1* är numret på ditt formulär. Arrayen börjar väl på noll, antar jag.

Permalänk: https://www.webforum.nu/p/1219918

## #15 — @nders, 2003-12-03T10:56Z

Aha, jag trodde det var all kod på sidan. 

Det du gör är att du postar ett formulär. Det innebär att sidan laddas om.

Och ja, du anger själv vilket formulär som postas, men när du postas ett formulär laddas allt på sidan om, inte bara det formulär du postar.

Du anger vilket formulär som ska postas antingen genom att ange dess index (0 om det är det första, 1 om det är det andra, osv) när du postar formuläret.

```
<select name="kat" onchange="document.forms[0].submit();">
```

Annars kan du ge formulären namn och referera till det istället.

```
<form method="post" name="myForm">
<select name="kat" onchange="document.myForm.submit();">
```

Mvh

Permalänk: https://www.webforum.nu/p/1219921

## #16 — Seiza, 2003-12-03T10:58Z

Ja just det, nu verkar det nära.  :) 

Sidan laddas om men ingen förändring sker i den andra boxen. Verkar som den hela tiden kör else-satsen istället.

Permalänk: https://www.webforum.nu/p/1219922

## #17 — @nders, 2003-12-03T10:59Z

Hur ser din kod ut nu?

Permalänk: https://www.webforum.nu/p/1219923

## #18 — Seiza, 2003-12-03T11:01Z

```
		<td>
			<%
			SET rsf = anslutU.Execute("SELECT katID, katnamn FROM Kategori WHERE förälder=0 ORDER BY katnamn asc")
			%>
			<form name="katform">
			Huvudrubrik<br>
			<select name="kat" onchange="document.katform.submit();">
			 <% while not(rsf.EOF) %> 
			 <option value="<%=rsf("katid")%>"><%=rsf("katnamn")%>
			 <% rsf.movenext
			 wend
			 rsf.Close()
			 %>
			</select>
		</td>
		<td>
			Underrubrik<br>
			<select name="kat2">
			<%
			if request.form("kat") <> "" then
			SET rsb = anslutU.Execute("SELECT katID, katnamn FROM Kategori WHERE förälder="& cInt(request.form("kat")) &" ORDER BY katnamn asc")
			%>
			<% while not(rsb.EOF) %> 
			<option value="<%=rsb("katID")%>"><%=rsb("katnamn")%>
			<% rsb.movenext
			wend
			rsb.Close()
			else
				Response.write "<option>Du måste välja något i den första!</option>"
			end if
			%>
			</select>
			</form>
		</td>
```

Permalänk: https://www.webforum.nu/p/1219926

## #19 — Seiza, 2003-12-03T11:02Z

Men nu kurrar magen så jag tror bestämt jag får ta mig lite lunch och fortsätta att slita mig i håret om en stund.

Tack för all hjälp hittills iaf, jag återkommer. Lita på det.  :e

Permalänk: https://www.webforum.nu/p/1219927

## #20 — @nders, 2003-12-03T11:07Z

Du måste ha med **method="post"** i \<form\>-taggen som i mitt exempel, om du ska använda request.form. Annars är det request.querystring som gäller, eftersom defaultmetod för formulär är **get**.

Mvh

Permalänk: https://www.webforum.nu/p/1219931

---

Tråden på webben: https://www.webforum.nu/amne/asp/91705-dynamiska-select-med-databaskoppling  
Nästa sida: https://www.webforum.nu/amne/asp/91705-dynamiska-select-med-databaskoppling/page2.md
