Avatar billede fibs Novice
13. februar 2006 - 00:59 Der er 3 kommentarer

Selectbokse/opdatering med ASP

Nedenstående kode går ind på en side hvor man kan vælge:
Dækbredde - Dækhøjde - Dæk størrelse og det virker også OK, men brugeren kan godt vælge en kombination så der ingen dæk i den størrelse findes, derfor kan man få siden til at opdatere når et punkt vælges?

F.eks vælger jeg dæk bredde på 185 - Så skal den automatisk under dækhøjde og dækstørrelse frasortere dem der ikke kan passe ind, når så dækhøjde vælges skal igen dækstørrelse frasortere de størrelser som ikke findes.



<html>
<head>
</head>
<body>
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("log/db_daek.mdb")
Conn.Open DSN

SQLbreddeQuery = "SELECT DISTINCT bredde FROM tb_daek ORDER BY bredde"
SQLhojdeQuery = "SELECT DISTINCT hojde FROM tb_daek ORDER BY hojde"
SQLstorrelseQuery = "SELECT DISTINCT storrelse FROM tb_daek ORDER BY storrelse"
' --- DISTINCT fjerner alle dublikater --- '

Set RSbredde = Conn.Execute(SQLbreddeQuery)
Set RShojde = Conn.Execute(SQLhojdeQuery)
Set RSstorrelse = Conn.Execute(SQLstorrelseQuery)
%>

<table width="600">
<tr>
<td width="150" align="center">Vælg dækbredde</td>
<td width="150" align="center">Vælg dækhøjde</td>
<td width="150" align="center">Vælg dækstørrelse</td>
<td width="150"></td>
</tr>
<tr>
<td width="150" align="center">
<form method="POST" action="selected.asp">
    <select name="bredde" width="100">
<%
  Do While Not (RSbredde.BOF Or RSbredde.EOF)
%>
        <option><%= RSbredde("bredde") %></option>
<%
    RSbredde.MoveNext
  Loop
%>
    </select>

</td>
<td width="150" align="center">
    <select name="hojde" width="100">
<%
  Do While Not (RShojde.BOF Or RShojde.EOF)
  ' --- Looper bredderne igennem
%>
        <option><%= RShojde("hojde") %></option>
<%
    RShojde.MoveNext
  Loop
%>
    </select>
</td>

<td width="150" align="center">
    <select name="storrelse" width="100">
<%
  Do While Not (RSstorrelse.BOF Or RSstorrelse.EOF)
  ' --- Looper bredderne igennem
%>
        <option><%= RSstorrelse("storrelse") %></option>
<%
    RSstorrelse.MoveNext
  Loop
%>
    </select>
</td>
<td>

<input type="submit" value="Klik her"></td>
</td>
</tr>
</table>
<%
Conn.Close
Set Conn = Nothing
%>
</form>
</body>
</html>

MVh
Fibs
Avatar billede tofte Juniormester
13. februar 2006 - 21:03 #1
Det kan laves på mindt to måder.
1) styr indholdet via javascript. Du kan få serveren til at generere noget javascript kode som viser hvordan de forskellige værdier er betinget af hinanden. Se mere her http://www.mattkruse.com/javascript/dynamicoptionlist/
2) Sender formen med data hver gang felt et ændres og bestemmer værdierne af felt to. Dette kan gøres sådan

<%
valg=request.QueryString("valg1")

'Hvis valg er tom sættes den til 0
if len(valg)=0 then valg=0

'Vi laver et array med byer
myArr=Array("Vælg her","Århus","Vojens","Esbjerg")
' og et array med tilhørende lokationer.
myDir=Array("Vælg her","Tilst,Riskov,City","C","N,Ø,C")

%>
<form name="myForm">
<select NAME="valg1" onchange="myForm.submit()">
<%
for a = LBound(myArr) to UBound(myArr)
%>
<option value="<%=a%>" <%if a=valg then response.Write("selected")%>> <%=myArr(a)%></option>
<%
next
%>
</select>
<select  NAME="valg2">
<%
myDirArr=split(myDir(valg),",")
for a = LBound(myDirArr) to UBound(myDirArr)
%>
<option value="<%=a%>" <%if a=valg then response.Write("selected")%>> <%=myDirArr(a)%></option>
<%
next
%>
</select>
</form>
Avatar billede fibs Novice
24. februar 2006 - 00:07 #2
Ser meget godt ud, hvad er det der får koden til at læse næste og hvordan får man den til at tage fra databasen?

Fibs
Avatar billede tofte Juniormester
26. februar 2006 - 18:56 #3
Jeg forstår ikke helt hvad du mener med "hvad er det der får koden til at læse næste".

Hvis du skal have væredierne fra databasen, skal du bare udskifte
<%
for a = LBound(myArr) to UBound(myArr)
%>
<option value="<%=a%>" <%if a=valg then response.Write("selected")%>> <%=myArr(a)%></option>
<%
next
%>

med
<%
while not RSbredde.eof%>
<option value="<%=RSbredde("etellerandetfelt_ID")%>" <%if a=valg then response.Write("selected")%>> <%=RSbredde("etellerandetfelt_NAVN")%>%></option>
<%wend%>

jeg kan ikke rigtigt komme det med databasen nærmere, da jeg ikke kender strukturen, samt hvordan du holder styr på, hvilke højder og størrelser der passer sammen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester