webForumDet fria alternativet

Dynamiskt styra förvalt alternativ i drop down-meny

PHP

6 svar · 680 visningar · startad av Trankan

Medlem sedan okt. 2006129 inlägg
Frågan#1

Hej!

Jag hoppas att det här blir min sista fråga på ett tag. ;) Det är så att jag har en drop-down meny med ett antal alternativ, och jag vill att den ska ha ett förvalt alternativ som styrs av en variabel. Alltså, det värde som finns i variabeln ska vara det som blir förvalt i menyn. Går det här att lösa?

Medlem sedan nov. 20014 054 inlägg
#2

Det beror lite grann på hur man fyller värdena i drop-down menyn. Fylls den dynamiskt från ex. databas eller liknande. Så kan du kolla om värdet i variabeln är lika med det värde som skall vara förvalt.
Lite tankekod (var ett tag sedan jag skapade något i php):

function String setSelected(var, var1) {
if($var == $var1) { 
  return " selected";
} 
}

Och när man fyller drop-down menyn:


// ..

echo "<option value="".$value1.""".setSelected($value, $var).">".$string."</option>";
// ..
Medlem sedan okt. 2006129 inlägg
#3

Fredde Mannen skrev:

Det beror lite grann på hur man fyller värdena i drop-down menyn.

Som det är nu så ligger värdena direkt i koden, men det jag antar att det blir krångligare att lösa än om de ligger i en databas?

Medlem sedan nov. 20014 054 inlägg
#4

Trankan skrev:

Som det är nu så ligger värdena direkt i koden, men det jag antar att det blir krångligare att lösa än om de ligger i en databas?

Ligger de direkt i koden, kan du lösa det på ungefär samma sätt...

<select name="bilar">
   <option value="mb"<?=setSelected("mb",$variabel1)?>>Mercedes</option>
   <option value="vw"<?=setSelected("vw",$variabel1)?>>Volkswagen</option>
</select>

Är variabeln lika med vw, så bör Volkswagen sättas som selected.. etc.

Medlem sedan okt. 2006129 inlägg
#5

Fredde Mannen skrev:

Ligger de direkt i koden, kan du lösa det på ungefär samma sätt...

<select name="bilar">
   <option value="mb"<?=setSelected("mb",$variabel1)?>>Mercedes</option>
   <option value="vw"<?=setSelected("vw",$variabel1)?>>Volkswagen</option>
</select>

Är variabeln lika med vw, så bör Volkswagen sättas som selected.. etc.

Jo precis. Det enda problemet är att listan innehåller världens alla länder, så det finns med andra ord flera hundra värden. Därför blir det en ganska tidskrävande lösning plus att det är lätt att man skriver fel på nåt ställe. Frågan är om det finns något program där man kan kopiera alla värden och klistra in dem till höger om de ursprungliga, så att man slipper göra det för hand samtidigt som man undviker fel.

Medlem sedan juni 20001 251 inlägg
#6

Såhär, kanske?

<select name="country">
<?php
$selected = "AL";
$countrylist = array(
            'AF' =>    'Afganistan',
            'AL' =>    'Albania',
            'DZ' =>    'Algeria');

foreach ($countrylist as $key => $value) {
?>
<option value="<?php echo $key; ?>"<?php if($key==$selected) echo " selected"; ?>><?php echo $value; ?></option>
<?php
}
?>
</select>
Medlem sedan okt. 2006129 inlägg
#7

Stort tack för hjälpen stevenet! :)

254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)