Jag håller på och bygger en sajt i html/asp/javascript, och har en Accessdatabas. bara en tanke, går säkert att göra på annat sätt och optimera hit o dit. bara en tanke, går säkert att göra på annat sätt och optimera hit o dit. Man läser vad man vill läsa.. En liten komplettering Jag har gjort en asp-sida, som innefattar precis vad du frågar om.Hämta värden från DB till dropdownlist nr 2, beroende av val i dropdownlist nr 1
Sitter nu med ett formulär, med bla två dropdownlister. I den första hämtar jag värden från databasen - och sen ska jag hämta andra poster från databasen till dropdownlist nr 2, beroende på vad man valt i första dropdownlisten, men jag får inte ordning på det...
I nuläget läser jag in värdena i första dropdownlisten, och använder en onChange, som anropar en javascriptfunktion där jag kollar vilket värde som är valt. Hur gör jag nu för att läsa in värden i den andra dropdownlisten? Ska jag anropa samma sida igen, för att uppdatera den? Hur får jag den första dropdownlisten att då markera valet man gjorde? Och hur skickar jag sen med alla värdena (första dropdownlisten, andra dropdownlisten + resterande textfält) till nästa asp-sida, där jag lägger in värdena i databasen??
Tacksam för hjälp...
//CicciSv: Hämta värden från DB till dropdownlist nr 2, beroende av val i dropdownlist
<code>
<select onChange="if(this.selectedIndex!=0) self.location=this.options[this.selectedIndex].value">
<option value="denhärsidan.asp?ID=1">Val1</option>
<option value="denhärsidan.asp?ID=2">Val2</option>
<option value="denhärsidan.asp?ID=3">Val3</option>
<option value="denhärsidan.asp?ID=4">Val4</option>
</select>
'och sen till den andra dropdownmenyn nåt i stil med:
<%
nVal = Replace(Request.QueryString("ID"),"'","''")
if nVal <> "" then
SQL = "SELECT valID, valNamn FROM Menyer WHERE valID="& Request.QueryString("ID")
Set rs = Conn.Execute(SQL)
response.write "<select name=""ANDRAMENYN"">"
do while not rs.EOF
response.write "<option value="& rs("valID") &">"& rs("valNamn") &"</option>"
rs.MoveNext
loop
response.write "</select>"
else
response.write "<select name=""ANDRAMENYN"">"
response.write "<option>----------</option>"
response.write "</select>"
end if
</code>
/johannesSv: Hämta värden från DB till dropdownlist nr 2, beroende av val i dropdownlist
<code>
<select onChange="if(this.selectedIndex!=0) self.location=this.options[this.selectedIndex].value">
<option value="denhärsidan.asp?ID=1">Val1</option>
<option value="denhärsidan.asp?ID=2">Val2</option>
<option value="denhärsidan.asp?ID=3">Val3</option>
<option value="denhärsidan.asp?ID=4">Val4</option>
</select>
'och sen till den andra dropdownmenyn nåt i stil med:
<%
nVal = Replace(Request.QueryString("ID"),"'","''")
if nVal <> "" then
SQL = "SELECT valID, valNamn FROM Menyer WHERE valID="& Request.QueryString("ID")
Set rs = Conn.Execute(SQL)
response.write "<select name=""ANDRAMENYN"">"
do while not rs.EOF
response.write "<option value="& rs("valID") &">"& rs("valNamn") &"</option>"
rs.MoveNext
loop
response.write "</select>"
else
response.write "<select name=""ANDRAMENYN"">"
response.write "<option>----------</option>"
response.write "</select>"
end if
%>
</code>
/johannesSv: Hämta värden från DB till dropdownlist nr 2, beroende av val i dropdownlist
<code>
<%
nVal = Replace(Request.QueryString("ID"),"'","''")
response.write "<select onChange=""if(this.selectedIndex!=0) self.location=this.options[this.selectedIndex].value"">"
if nVal = "1" then
response.write " <option value=""denhärsidan.asp?ID=1"" selected>Val1</option>"
else
response.write " <option value=""denhärsidan.asp?ID=1"">Val1</option>"
end if
if nVal = "2" then
response.write " <option value=""denhärsidan.asp?ID=2"" selected>Val2</option>"
else
response.write " <option value=""denhärsidan.asp?ID=2"">Val2</option>"
end if
if nVal = "3" then
response.write " <option value=""denhärsidan.asp?ID=3"" selected>Val3</option>"
else
response.write " <option value=""denhärsidan.asp?ID=3"">Val3</option>"
end if
if nVal = "4" then
response.write " <option value=""denhärsidan.asp?ID=4"" selected>Val4</option>"
else
response.write " <option value=""denhärsidan.asp?ID=4"">Val4</option>"
end if
</select>
'och sen till den andra dropdownmenyn nåt i stil med:
if nVal <> "" then
SQL = "SELECT FirstID, SecondID, valNamn FROM Menyer WHERE FirstID="& Request.QueryString("ID")
Set rs = Conn.Execute(SQL)
response.write "<select onChange=""if(this.selectedIndex!=0) self.location=this.options[this.selectedIndex].value"">"
do while not rs.EOF
response.write "<option value=""nyasidan.asp?ID1="& nVal &"&ID2="& rs("SecondID") &""">"& rs("valNamn") &"</option>"
rs.MoveNext
loop
response.write "</select>"
else
response.write "<select>"
response.write "<option>----------</option>"
response.write "</select>"
end if
%>
</code>
Detta är inte testat, men det borde funka så här:
Om du inte valt något så kommer första dropdownen att vara i ursprungsläge, andra tom.
När du väljer något i den första så sätts det valet som markerat i dropdown 1 och ur databasen väljs alla
val som finns till dropdown 1:s värde, varpå dropdown2 populeras med ID1 för första dropdownens ID och ID2 för andra dropdownens värde, och sen då ett eventuellt namn på alternativet.
/johannesSv:Hämta värden från DB till dropdownlist nr 2, beroende av val i dropdownlist
Jag gjorde en frame
---------------------
|Frame | Frame |
| 1.asp | 2.asp |
|______|_________|
| bottom.asp |
|________________|
'Frame1.asp
<script language="vbscript">
sub submitthis
form1.submit
end sub
</script>
'anslut databasen och plocka fram de poster som du vill ha sen
<form ACTION="frame2.asp" METHOD="POST" NAME="form1" target="right">
<select ONCHANGE="submitthis" SIZE="1" NAME="one" class=buttons>
<option></option>
<% Do While Not rs.EOF %>
<option value="<% = rs("titel") %>">
<% = rs("titel") %></option>
<% rs.movenext
loop %>
</select>
</form>
'Frame2.asp
'Du måste även här ta fram de poster som bygger på resultatet av Frame1.asp
if len(trim(request("d2"))) > 0 then
%>
<script LANGUAGE="JavaScript" FOR="window" EVENT="onLoad()">
<!--
parent.bottom.location.href = "<%= request("d2") %>"
//-->
</script>
<script language="vbscript">
sub submitthis
form2.submit
end sub
</script>
<% end if%>
<form name="form2" Target="bottom" action="bottom.asp" method="post">
<input type="hidden" name="one" value="<%= request("one") %>">
<p>
<select onChange="this.form.submit();" SIZE="1" NAME="d2" class=buttons>
<option value="Välj datum">Välj Datum</option>
<%
Do While Not rs2.EOF %>
<option value="<% = rs2("datum") %>">
<% = rs2("datum") %>
</option>
<% rs2.movenext
loop %>
</select><br>
<input type="submit" value="Visa protokoll" class=buttons>
</form>
'Slutligen så kan du i bottom.asp ta fram dina resultat med hjälp av en SQL.
'Så här gjorde jag
strSQL="SELECT ID, titel, sekre, just1, just2, protokoll, datum FROM prot
WHERE datum like '%" & Request.Form("d2") & "%'"
Jag hoppas att detta hjälpte dig, annars så är du välkommen att fråga.