Avatar billede sigmadk Nybegynder
09. juni 2008 - 21:59 Der er 4 kommentarer

To sammenhængende <select>

Jeg skal have to <select> til at afhænge dynamiske af hinanden. Indholdet i de to <select> bygger på udtræk fra en MySQL-database via PHP.

-----------------------------------------

I den første <select> vælger man et land:

<select name="land" size="1" onchange="Liste();">
<?
    $foresp2 = mysql_query("SELECT id, navn FROM lande WHERE region = '$data[id]' ORDER BY navn ASC");
    while($data2 = mysql_fetch_array($foresp2)){
?>
<option value="<?=$data2[id]; ?>"><?=$data2[navn]; ?></option>
<?
    }
?>
</select>

-----------------------------------------

I den anden <select> skal på baggrund af valget i den første (land) vælges en by:

<select name="sted" size="1">
<script language="javascript">
document.write(steder[land]);
</script>
</select>

-----------------------------------------

Før disse to <select> har jeg defineret funktionen "Liste()" samt tabellen "steder", der indeholder <option>'erne for hvert land:

<script language="javascript">
steder = new Array(199);
<?

    $foresp = mysql_query("SELECT id, navn FROM lande ORDER BY id ASC");
    while($data = mysql_fetch_array($foresp)){
           
?>steder[<?=$data[id]; ?>] = '<?

        $foresp2 = mysql_query("SELECT id, navn FROM steder WHERE land = '$data[id]' ORDER BY navn ASC");
        while($data2 = mysql_fetch_array($foresp2)){
   
?><option value="<?=$data2[id]; ?>"><?=$data2[navn]; ?></option>;<?
   
        }
       
?>';<?
   
    }
       
?>
   
function Liste() {
    land = document.stoppested.land.selectedIndex;
    return land;
}
</script>

-----------------------------------------

Mit problem er grundlæggende, at når et land er valgt ("onChange()") i <select>'en "land", så kommer <option>'erne ikke frem i <select>'en "sted".

Hvad mangler jeg eller gør jeg forkert?
Avatar billede sigmadk Nybegynder
09. juni 2008 - 22:07 #1
Det jeg gerne vil have er lidt i stil med dette: http://roenving.users.whitehat.dk/index.html?/WD4Selects-beta.html
Avatar billede olebole Juniormester
09. juni 2008 - 22:14 #2
<ole>

Du mangler bare at finde udaf, hvad PHP er for noget  =)

PHP afvikles på serveren, så hvis du skal have én select til at bestemme noget i en anden select - på basis af et MySQL-træk - må du naturligvis forbi serveren først.
Du kan evt. bruge noget Ajax - prøv at se eksemplerne i denne tråd:
    http://www.eksperten.dk/spm/817625

De viser ikke noget om en select - men om, hvordan du taler med serveren i baggrunden. Resten kan du læse dig til i roenvings forslag

/mvh
</bole>
Avatar billede sigmadk Nybegynder
09. juni 2008 - 22:18 #3
Tallerne med <option>'erne bliver jo sat i starten af siden, og da de bliver afviklet på serveren før at siden blive eksekveret burde det ikke være noget problem. Jeg kan bare ikke finde ud af at kalde til tabellen, når et land er valgt?
Avatar billede roenving Novice
09. juni 2008 - 23:33 #4
Hvis du har to selects, med fast indhold er den fuldt skalerbare model klart overkill, men prøv at kigge på eksemplet i http://www.eksperten.dk/spm/615326, den skulle kunne klare det !-)
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