Avatar billede bademester Nybegynder
02. april 2003 - 09:28 Der er 13 kommentarer og
1 løsning

Dynamiske dropdown bokse - Kan nogen lave dette script om ??

Jeg er interesseret i at få nogle andre værdier ud til min form - I den 1. dropdown boks kan man vælge amt og på grundlag af værdien i denne - kan man herefter vælge kommune. Som scriptet er nu - får man kommune id ud af formen. Jeg er interesseret i at få netop de værdier ud - som man vælger i de 2 dropdown bokse - altså amt og kommune

Håber der er en der svarer hurtigt - da det haster og da jeg ikke er en ørn til JavaScript ;-)

Her følger scriptet

<% @LANGUAGE = VBScript %>
<%

    Option Explicit

    Dim conn, sql_amt, sql_kom, rs, arrAmter, arrKommuner, print_amter, print_js, i, j, count

    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={MySql}; SERVER=localhost; DATABASE=eksperten; UID=root; PWD="

    sql_amt = "SELECT amtID,amt FROM exp_amter ORDER BY amt"
    sql_kom = "SELECT amtID,kommuneID,kommune FROM exp_kommune ORDER BY amtID, kommune"
   
    Set rs = conn.Execute(sql_amt)
    arrAmter = rs.GetRows()
    rs.Close
    Set rs = Nothing
   
    Set rs = conn.Execute(sql_kom)
    arrKommuner = rs.GetRows()
    rs.Close
    Set rs = Nothing
   
    conn.Close
    Set conn = Nothing
   
    For i = 0 to Ubound(arrAmter,2)
        print_amter = print_amter & "<option value=""" & arrAmter(0,i)  &""">" & arrAmter(1,i) & "</option>" & VbCrLf
        print_js = print_js & "kommuner[" & arrAmter(0,i) & "] = new Array ("
        count = 0
        For j = 0 to Ubound(arrKommuner,2)
            If arrKommuner(0,j) = arrAmter(0,i) Then
                If count = 0 Then
                    print_js = print_js & "'0#Vælg kommune','" & arrKommuner(1,j) & "#" & arrKommuner(2,j) & "'"
                Else
                    print_js = print_js & ",'" & arrKommuner(1,j) & "#" & arrKommuner(2,j) & "'"
                End If
                count = count + 1
            End If
        Next
        print_js = print_js & ")" & VbCrLf
    Next

%>

<html>
<head>
<script language"JavaScript">
<!--

var kommuner = new Array()
kommuner[0] = new Array ('0#Vælg først et amt')
<%= print_js %>

function getKommuner() {
  var frm = document.formular;
  var amt_id = frm.list_amt.value;
  var i; 
  frm.list_kom.options.length = 0;
  for (i = 0; i < kommuner[amt_id].length; i++) {
    arr_split = kommuner[amt_id][i].split("#");
    var no = new Option();
    no.value = arr_split[0];
    no.text = arr_split[1];
    frm.list_kom[i] = no;
  }
}

//-->
</script>
</head>

<body>
<form name="formular">

<select name="list_amt" style="width:150" onchange="getKommuner()">
<option value="0">Vælg amt</option>
<%= print_amter %>
</select>

<select name="list_kom" style="width:150">
<option>Vælg først et amt</option>
</select>

<input type="button" onclick="alert(document.formular.list_kom.value)" value="Hent value for valgt kommune" />

</form>
</body>
</html>
Avatar billede Slettet bruger
02. april 2003 - 15:29 #1
Avatar billede bademester Nybegynder
02. april 2003 - 15:34 #2
Den er fin - jeg har set den før da jeg tidligere kiggede forummet igennem - kunne jeg se koden ???
Avatar billede Slettet bruger
02. april 2003 - 15:40 #3
Vis > Kilde.
Avatar billede bademester Nybegynder
02. april 2003 - 15:40 #4
OK - det er jo rent html - så jeg har set kilden - men jeg skulle gerne bruge en hvor den henter det fra tabeller, idet html koden ville blive alt for omfattende - da det ville blive temmelig lange lister. Endvidere skulle jeg ind og redigere i html - hvergang der skete en ændring - det er nemmere at tilføje det til en database - ellers tak for tilbuddet :-)
Avatar billede Slettet bruger
02. april 2003 - 15:48 #5
Du får jo bare ASP til at skrive HTML'et og JavaScriptet ud. Sværere er det ikke.
Avatar billede bademester Nybegynder
02. april 2003 - 15:58 #6
Ok - den kigger jeg lidt på i aften eller i morgen - jeg vender tilbage ....
Avatar billede bademester Nybegynder
03. april 2003 - 15:35 #7
Jeg har siddet lidt og rodet med det - Men jeg har lidt problemer - hvordan får jeg udtrækket fra min database smidt over i array'et i java script funktionen - således at dette kan ses i den 2. dropdownboks ???
Avatar billede Slettet bruger
03. april 2003 - 15:53 #8
Du laver bare noget kode, der udskriver:

afdelinger[0][0] = "<--";

... og en løkke:

for hver amt:
  for hver kommune i amt skriv:
    afdelinger[AMT-NUMMER][KOMMUNE-NUMMER] = "KOMMUNE";
Avatar billede bademester Nybegynder
03. april 2003 - 17:46 #9
Kræver det ikke, at jeg laver følgende tabel:

Amt
amtnr amtnavn
kommune
amtnr kommunenr kommunenavn

således at din løkke ville se sådan ud se sådan ud
amt[amtnr][kommunenr]="kommune";

dvs jeg skal trække kommune ind i løkken hvor amt.amtnr = kommune.amtnr.
er det forstået rigtigt.
Iså fald - hvis jeg laver et sql udtræk kan det så passe at det er
strsql = "select amtnr, kommune from kommunedb where amtnr= '" & amtnr & "' order by kommune"
conn.execute(strsql)
Do While not rs.EOF
strkom = rs("kommune")
Rs.MoveNext
Loop
Do
Loop While Not rs.EOF
Conn.Close
Set Conn = Nothing

Og så er det jeg skal have lagt det array'et ---- hvordan ??

Som sagt - jeg er ikke så stærk til java :-(
Avatar billede Slettet bruger
03. april 2003 - 21:47 #10
Du skal have to løkker; en der kører amterne igennem og en, der kører kommunerne i det aktuelle amt igennem. Hvad du skal gøre derfra kan jeg nok ikke hjælpe dig med. Måske bør du spørge i ASP-kategorien. Nu har du i hvert fald scriptet, som det hele skal ind i - og så tager det nok ikke så langt tid for eksperterne at finde ud af, hvad du så skal gøre.
Avatar billede bademester Nybegynder
04. april 2003 - 11:31 #11
Phoenixv - Jeg fandt ud af det - Jeg skulle blot bruge lidt tålmodighed - Efter jeg skrev sql sætning ud som det står i dit script - virker det perfekt
tak for hjælpen
Avatar billede Slettet bruger
04. april 2003 - 15:28 #12
Så skal du nok overveje at give point en anden gang... Men det går nok for nu; andre brugere kan dog blive sure over sådan noget.
Avatar billede bademester Nybegynder
07. april 2003 - 17:26 #13
Jeg troede du havde fået point - når jeg accepterede svaret - Det er første gang jeg har stillet spørgsmål - så jeg kender ikke rigtigt systemet. Selvfølgelig skal du have din point - kan jeg give dem til dig nu eller ?? - pointsystemet er næsten sværere end asp ;-)
Avatar billede Slettet bruger
08. april 2003 - 17:43 #14
Nej, nu er det for sent. Men jeg skal svare, før du kan acceptere mit svar. Og jeg svarer først, når jeg er helt sikker på, at mit svar er korrekt i sammenhængen.
Men som sagt: Det går nok, 30 point betyder ingenting.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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