webForumDet fria alternativet

Ta ut valt värde i en select!

6 svar · 596 visningar · startad av paddan

paddanMedlem sedan dec. 2002299 inlägg
#1

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
#2

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
#3

Ä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
#4

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
#5

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
#6
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
#7

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

%>
122 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)