Jag behöver lite hjälp här nu då jag fortfarande inte riktigt lagt manken till och lärt mig Javascript.
Jag har idag en användartabell med kanske 50 användare. Jag har även en tabell där det ligger underanvändare, som är knutna till en viss användare.
För att göra det enkelt för mig om jag nu vill lägga till dessa underanvändare i en annan tabell vill jag först loopa ut alla användare i en <select>. När man sedan väljer en användare i den <select>en vill jag att det ska finnas en <select> nummer två bredvid som via "onchange" loopar ut alla underanvändare till just den användaren jag valt i <select> nummer 1.
Är detta en bra lösning eller finns det bättre?
Liten början på en kodsnutt skulle vara väldigt uppskattat!
Det du behöver göra är att mappa användarna så här
kommun[1][0]="Underanv.#1 till anv.#1";
kommun[1][1]="Underanv.#2 till anv.#1";
kommun[2][0]="Underanv.#1 till anv.#2";
kommun[2][1]="Underanv.#2 till anv.#2";
o.s.v.
Sedan kanske du vill döpa om vissa identifierare så att de får en mer passande beskrivning ;)
kommun[1][b][0][/b]="Underanv.#1 till anv.#1";
kommun[1][b][1][/b]="Underanv.#2 till anv.#1";
kommun[2][b][0][/b]="Underanv.#1 till anv.#2";
kommun[2][b][1][/b]="Underanv.#2 till anv.#2";
Det som är fetmarkerat, i "value" i den andra <select>en, samt den sifran som inte är fetmarkerad som value i den första <select>en?
Annars är det precis vad jag var ute efter! Tack PeterS och Jesper!
Upptäckte just en lite grej, som jag inte riktigt kan få koll på.
När jag sorterar användarna i den första <select>en i bokstavsordning så klaffar inte längre den andra <select>en som den ska.
Om vi säger att det är två personer som börjar på B, Britt och Börje.
Om vi säger att Börje har användarID 1 och Britt 49, och Britt hamnar på plats nummer 1 i listan så får Britt, Börjes underanvändare i den andra <select>en.
Ja, det stämmer. Det första indexet i kommun är kopplat till positionen i den första <select>en. Så kommun[1][0]-kommun[1][n] är kopplad till den andra positionen i den första <select>en.
Det enklaste lösningen är alltså att sortera listan innan den skrivs till select numero uno. Jag antar att du loopar ut namnen från en databas? Då bör det gå att fixas med en ORDER BY. :)
Ja, jag har testat det, och nu sorterar jag efter ID, för att göra det så enkelt som möjligt, men det blir fortfarande fel.
Om vi säger att Jimmie ID nummer 10, men han ligger på plats nummer 8 i listan, eftersom det inte finns några användare på ID 4 och 5.
Då får jag fram Jimmies underanvändaren om jag väljer användare nummer 10 i listan, vilken kan vara vem som helst, säg Jonas.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Sveriges alla kommuner</title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--//
var kommun = new Array(22);
for(var n=0;n<kommun.length;n++){
kommun[n] = new Array();
}
kommun["0"] = [
{ id:0, txt:"-- Välj län --" }
];
kommun["10"] = [
{ id:12, txt:"underanv.#1 till anv.#10" },
{ id:25, txt:"underanv.#2 till anv.#10" },
{ id:64, txt:"underanv.#3 till anv.#10" }
];
kommun["37"] = [
{ id:78, txt:"underanv.#1 till anv.#37" }
];
function showSubKommun(subCat,selectObj){
selectObj.length=kommun[subCat].length;
for(var n=0;n<kommun[subCat].length;n++){
selectObj[n].text=kommun[subCat][n].txt;
selectObj[n].value=kommun[subCat][n].id;
}
}
</script>
<form>
<select name="lan" onChange="showSubKommun(this.options[this.selectedIndex].value,this.form.underKommun);">
<option value="0" selected>-- Välj Län --</option>
<option value="10">Blekinge län</option>
<option value="37">Dalarnas län</option>
</select>
<select name="underKommun">
<option selected>-- Välj län --</option>
</select>
</form>
</body>
</html>
Nu är option.value i select #1 kopplat till en unik underkategori (kommun["n"]). Den översta, "-- Välj län --", har value = 0. Att sortera om select #1 skall nu inte medföra att fel underkategori visas.