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.
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 & "
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>
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?
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.
<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.
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?
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?
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.
<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>
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
282 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e