Avatar billede dd-man Nybegynder
07. januar 2003 - 15:26 Der er 19 kommentarer og
3 løsninger

Lave dynamisk dropdown

Hej, jeg vil lige spørge, hvordan man laver sådan noget, som der er på www.bilbasen.dk

De har sådan at man kan vælge "Mærke" på en bil, og så kommer der en liste med modeller frem, som passer det til enkelte mærke.

Man kan ikke nå at se at Javascript bytter dropdown ud med en anden dropdown men det gør det.

Jeg vil spørge, om nogen kan hjælpe mig med at lave sådan en.

Det skal dog være med Amter og kommuner :)

Man vælger et amt, og der kommer de kommuner frem som er i amtet.

på forhånd tak.
Avatar billede mufoxe Nybegynder
07. januar 2003 - 15:36 #1
lav en onChange="getKommuner()" på din dropdownliste. Denne funktion skal så hente og fylde den anden dropdownliste på baggrund af det valgte amt.
Du kan finde det valgte amt ved minForm.minDropDown.value
Avatar billede dd-man Nybegynder
07. januar 2003 - 15:47 #2
Ja, jeg ved godt at det skal være onchange til en function.. men det er selve functionen.. jeg kan nemlig ikke lave javascript selv.

kun noget php.. (som det skal kobles sammen med.. skal hentes fra database)
Avatar billede kryster Nybegynder
07. januar 2003 - 16:22 #3
Det her script bruger jeg, jeg her rette mit fra Region, Country til Amt, Kommune.
Hvis du ikke kan gennemskue at <select> boksne bliver fyldt fra en database, kan jeg rette det til statisk, select.

<script language="JavaScript">
// <!--
function changeAmt() {
  var punkter = new Array()
  switch(document.hjem.amt[document.hjem.amt.selectedIndex].value) {
<%
  strSQL = "SELECT TOP 1 AmtID FROM amter ORDER BY AmtID Desc"
  Set rsAntal = Conn.Execute(strSQL)
  For t = 1 to rsAntal("AmtID")
%>
    case '<%=t%>':
<%
    i = 0
    strSQL = "SELECT * FROM kommuner Where AmtID=" & t & " ORDER BY Kommune"
    Set rs = Conn.Execute(strSQL)
    Do While Not rs.EOF
%>      punkter[<%=i%>] = "new Option('<%=rs("Kommune")%>', '<%=rs("KommuneID")%>')";
<%
      i = i + 1
      rs.MoveNext
    Loop
%>      break;
<%
  Next
%>
    default:
      break;
  }
  document.hjem.kommune.options.length = 0;
  for (var i=0; i<punkter.length; i++) {
    document.hjem.kommune.add(eval(punkter[i]));
  }
}
// -->
</script>
<form name="hjem" method="post" action="bla.asp">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>Hvilket amt</td>
    <td>
      <select name="amt" onchange="changeAmt();">
<%
  strSQL = "SELECT * FROM amter ORDER BY amt"
  Set rs = Conn.Execute(strSQL)
  Do While Not rs.EOF
%>
        <option value="<%=rs("AmtID")%>"><%=rs("amt")%></option>
<%
    rs.MoveNext
  Loop
%>
      </select>
    </td>
  </tr>
  <tr>
    <td>Hvilken kommune</td>
    <td>
      <select name="kommune">
      </select>
    </td>
  </tr>
</table>
</form>
Avatar billede whatever Nybegynder
07. januar 2003 - 16:32 #4
Jeg har bikset et script sammen, du kan prøve det på: http://www.efusion.it/exp/302058.html
Avatar billede dd-man Nybegynder
07. januar 2003 - 18:51 #5
kryster:
Har ikke ASP :)

if (!$ASP) {
    print "Bruger PHP";
}

hehe
Avatar billede dd-man Nybegynder
07. januar 2003 - 18:51 #6
Den ser godt ud den whatever har lavet.

Kan du poste koden her?
Avatar billede whatever Nybegynder
07. januar 2003 - 18:52 #7
<html>
<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!--

var kommuner = new Array()
kommuner[0] = new Array ('Vælg først et amt')
kommuner[1] = new Array ('Amt 1 - Kommune 1','Amt 1 - Kommune 2','Amt 1 - Kommune 3','Amt 1 - Kommune 4')
kommuner[2] = new Array('Amt 2 - Kommune 1','Amt 2 - Kommune 2','Amt 2 - Kommune 3','Amt 2 - Kommune 4')
kommuner[3] = new Array('Amt 3 - Kommune 1','Amt 3 - Kommune 2','Amt 3 - Kommune 3','Amt 3 - Kommune 4')

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++) {
    var no = new Option();
    no.value = i;
    no.text = kommuner[amt_id][i];
    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>
<option value="1">Amt 1</option>
<option value="2">Amt 2</option>
<option value="3">Amt 3</option>
</select>


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


</form>

</body>
</html>
Avatar billede dd-man Nybegynder
07. januar 2003 - 21:26 #8
Ja, den virker.

Jeg har bare lige et spørgsmål, hvordan får jeg PHP til at sidde sammen med det? PHP'en skal udskrive de arrays...

Jeg har lavet:
<?
    include ("inc/mysql.inc.phtml");
    $getamterne = mysql_query("SELECT * FROM amter");
    while($getamternerow = mysql_fetch_array($getamterne)) {
        print "kommuner[$getamternerow[amtID]] = new Array ('$getamternerow[amt] - Kommune 1','Amt 1 - Kommune 2','Amt 1 - Kommune 3','Amt 1 - Kommune 4')\n";
    }
?>

Den laver en liste over amterne, men hvordan laver jeg det også med kommunerne?
Avatar billede whatever Nybegynder
07. januar 2003 - 21:31 #9
Hvordan ligger kommunerne i databasen? Altså hvilke felter har du tabellen med kommunerne?
Avatar billede dd-man Nybegynder
07. januar 2003 - 22:36 #10
Amter database:
CREATE TABLE amter (
  amt varchar(50) NOT NULL default '0',
  amtID int(11) NOT NULL default '0'
) TYPE=MyISAM;

Kommune:
CREATE TABLE kommune (
  id int(11) NOT NULL auto_increment,
  kommune varchar(30) NOT NULL default '',
  kommuneID int(11) NOT NULL default '0',
  amtID int(11) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede dd-man Nybegynder
07. januar 2003 - 22:36 #11
amtID hænger sammen med amtID..

kommuneID hænger sammen med en postnr database jeg også har.
Avatar billede whatever Nybegynder
08. januar 2003 - 00:03 #12
dd-man kan du ikke et sql-dump at amter og kommune til jbs@efusion.it

Jeg sidder og laver det, men vil gerne have tabeller, så jeg lige kan teste det.
Avatar billede dd-man Nybegynder
08. januar 2003 - 01:13 #13
Ok, done
Avatar billede dd-man Nybegynder
08. januar 2003 - 01:21 #14
Sig til hvis du ikke modtager den eller lign.
Avatar billede whatever Nybegynder
08. januar 2003 - 02:46 #15
Det tog lidt længere tid, da det ikke ville jeg som jeg havde lyst til :-)

Men det virker nu. Jeg indsatte nogle flere kommuner.

Kan testes på: http://efusion.it/exp/302058.php
SQL-fil: http://efusion.it/exp/302058.sql
Source: http://efusion.it/exp/302058.phps
Avatar billede whatever Nybegynder
08. januar 2003 - 02:47 #16
Desuden er der ændret lidt i javascriptet, så de rigtige kommuneID'er kom med som value.
Avatar billede dd-man Nybegynder
08. januar 2003 - 04:41 #17
er lidt træt.. ligger på det lidt senere efter noget søvn :)
Avatar billede dd-man Nybegynder
08. januar 2003 - 11:53 #18
Så er jeg klar igen :)

Hva... det virker jo fan**** :)

Men jeg har lige et spørgsmål.. du har givet:
<option value="0">Vælg amt</option>

Value="0"... vil det så sige at variablen ikke findes hvis det er "0" ?

Fordi den skal helst ikke findes, hvis den står på "Vælg amt", fordi så kan folk bruge søgningen bare ved at vælge "Vælg amt" som jo ikke er noget :)
Avatar billede dd-man Nybegynder
08. januar 2003 - 12:03 #19
Har fundet ud af at value="0" bare gør at variablen ikke findes..

Jeg troede bare den ville indeholde tallet "0".

:)
Avatar billede dd-man Nybegynder
13. januar 2003 - 22:24 #20
Jeg har lige et spm til whatever, og det er, om det er muligt at få lavet sådan at når man har valgt amt, bliver den første option en "vælg kommune", og ikke vise den første kommune...

Det skal nemlig være muligt at lade være med at skulle vælge kommune.. jeg har prøvet at fifle med det, men kommer hele tiden fejl på siden...
Avatar billede whatever Nybegynder
13. januar 2003 - 22:57 #21
Avatar billede dd-man Nybegynder
13. januar 2003 - 23:50 #22
Jep, den virker. Mange tak

hehe, mon du kan hjælpe her også? :)
http://www.eksperten.dk/spm/304758
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