paddanMedlem sedan dec. 2002299 inlägg Går det på något vis att spara ner värdet från en select i en variabel som sedan bestämmer vilken data som ska hämtas i en annan select.
Så här typ:
Först har jag en select ruta som ej hämtas ifrån en databas.
<option value="1">Test1</option>
<option value="2">Test2</option>
<option value="3">Test3</option>
Sen i en annan select vill jag ta värdet man valt i den första selecten och hämta data ifrån en databas.
Visa = "SELECT * FROM test WHERE ID = " & valet ifrån select1 & " "
<option value="<%=rs("id")"%>><%=RS("rubrik")%></option>
Båda selecten ligger på samma sida!
Har ni några tips eller ideer?
Mvh Martin Sköld
Peter SMedlem sedan dec. 20025 483 inlägg Detta sköter du med hjälp av ASP:
<form action="samma_sida.asp">
<select name="sel" onchange="this.form.submit()">
<option value="1">Test1</option>
<option value="2">Test2</option>
<option value="3">Test3</option>
</select>
</form>
<%
dim rq
rq = request.querystring("sel") & ""
if len(rq) > 0 and isnumeric(rq) then
Visa = "SELECT * FROM test WHERE ID = " & clng(rq)
' ...
end if
%>
paddanMedlem sedan dec. 2002299 inlägg Är inte prblemmet då att allt man har fyllt i i hela formuläret innan man kommer till select grejen så försvinner det eftersom man laddar om sidan..!
Peter SMedlem sedan dec. 20025 483 inlägg Jo, men då får du fånga upp de värdena och lägga in dem igen åt besökaren:
<input type="text" value="<%=[i]uppfångat värde här[/i]%>">
:)
paddanMedlem sedan dec. 2002299 inlägg Har löst det en bit nu..!
<form action="default.asp?page=2">
<select name="sel" id="page" class="select_1" style="margin-bottom:0;" onchange="this.form.submit()">>
<option value="1" <%if page2 = 1 then%>selected="selected"<%end if%>>Startsidan</option>
<option value="2" <%if page2 = 2 then%>selected="selected"<%end if%>>Avdelningar</option>
<option value="3" <%if page2 = 3 then%>selected="selected"<%end if%>>Kassa</option>
<option value="5" <%if page2 = 5 then%>selected="selected"<%end if%>>Om oss</option>
<option value="6" <%if page2 = 6 then%>selected="selected"<%end if%>>Kontakt</option>
<option value="7" <%if page2 = 7 then%>selected="selected"<%end if%>>Länkar</option>
</select>
</form>
Problemet är adressen blir bara default.asp?sel="värdet man väljer"
MEn adressen ska vara default.asp?page=2&sel="värdet man väljer"
Peter SMedlem sedan dec. 20025 483 inlägg function updateSel(obj){
location.href = obj.form.action += "&" + obj.name + "=" + obj.options[obj.selectedIndex].value;
}
<form onchange="updateSel(this)"
Peter SMedlem sedan dec. 20025 483 inlägg Du kan ju även använda AJAX, kom jag på. Ett exempel; sidan med formuläret
<style type="text/css">
#holder{ display: none; }
</style>
<script type="text/javascript">
function getReq(){
return typeof(ActiveXObject) == "function" ?
new ActiveXObject("Microsoft.XMLHTTP") :
typeof(XMLHttpRequest) != "undefined" ? new XMLHttpRequest() : null;
}
function updateSel(obj, sel){
var req = {o:getReq(),s:obj,t:sel};
if (req){
var id = obj.options[obj.selectedIndex].value;
req.o.open("GET", "http://localhost/process.asp?id=" + id, true);
req.o.onreadystatechange = function(){
if (req.o.readyState == 4){
parseAndUpdate(req);
}
}
req.o.send(null);
}
}
function parseAndUpdate(rt){
var txt = rt.o.responseText,
val = txt.match(/<value>((?:.|\n)*?)<\/value>/),
hl = txt.match(/<headline>((?:.|\n)*?)<\/headline>/);
if (val && hl){
rt.s.form.elements[rt.t].options[0] = new Option(val[1], hl[1]);
document.getElementById("holder").style.display = "block";
}
}
</script>
<form>
<select name="sel" onchange="updateSel(this, 'sel2')">
<option value="1">Test1</option>
<option value="2">Test2</option>
<option value="3">Test3</option>
</select>
<div id="holder">
<select name="sel2"></select>
</div>
</form>
Sedan skapar du en sida process.asp, som sköter databaskommunikationen:
<%
dim rq
rq = request.querystring("id")
if len(rq) > 0 and isnumeric(rq) then
dim sql
sql = "select id, rubrik from test where id = " & clng(rq)
dim conn, rs
set conn = server.createobject("adodb.connection")
set rs = server.createobject("adodb.recordset")
conn.open "provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("/[b]din_databas[/b].mdb")
rs.open sql, conn
if not rs.eof then
response.write "<value>" & rs("id") & "</value><headline>" & rs("rubrik") & "</headline>"
end if
rs.close
set rs = nothing
conn.close
set conn = nothing
end if
%>