GunnarDMedlem sedan juni 20014 290 inlägg Jag skriver i php men frågan är en xhtml fråga därför postar jag frågan här.
Jag vill skapa en dropdown box mha select men jag vill kunna välja vilket värde som skall vara förvald via ett värde från en databas.
Ex.
ShowDropBox($varde) {
echo "<select name='grupp'>";
echo "<option value='aaa'>";
echo "<option value='bbb'>";
echo "<option value='ccc'>";
echo "<option value='ddd'>";
ecbo "</select>";
Jag vill alltså mha variabeln $varde bestäma vilken av "option" raderna som skall vara vald (selected).
Hoppas någon förstår min fråga :)
CeeronMedlem sedan aug. 2000378 inlägg Undrar typ samma sak, i vanlig HTML kunde man ju bara skriva SELECTED på den som skulle visas... i XHTML funkar dock inte detta...
Nån?
Peter SMedlem sedan dec. 20025 483 inlägg I XHTML skall det vara såhär:
<select name="">
<option value=""></option>
<option value="" selected="selected"></option>
</select>
:)
GunnarDMedlem sedan juni 20014 290 inlägg Nja, i xhtml kan skall man skriva:
<option value="foobar" selected="selected">.....
men jag vill kunna sätta selected mha av variabeln $varde, något liknande <option selected="ccc"> tyvär så fungerar inte detta.
För det första så måste man stänga alla taggar i XHTML, så därför måste </option> finnas med.
Sen så måste man i XHTML alltid ha ett värde för attribut. Därför får man då skriva:
<option value="foo" selected="selected">Foo</option>
Sen en sak till... ecbo fungerar väl inte så bra i PHP? ;)
SPiNMedlem sedan mars 20007 896 inlägg Svar på Ceeron's fråga: Skriver selected="selected" som attribut och värde i option-taggen.
<select>
<option selected="selected">blah</option>
</select>
Svar på GunnarD's fråga:
Det är lite klurigt, men jag skulle gjort något sånt här;
ShowDropBox($varde) {
echo "<select name='grupp'>";
echo "<option value=" . GetValue( "aaa", $varde ) . "</option>";
echo "<option value=" . GetValue( "bbb", $varde ) . "</option>";
echo "<option value=" . GetValue( "ccc", $varde ) . "</option>";
echo "<option value=" . GetValue( "ddd", $varde ) . "</option>":
echo "</select>";
}
function GetValue( $val, $varde ) {
if( $val == $varde )
return "\"" . $val . "\" selected=\"selected\">";
else
return "\"" . $val . "\">";
}
Red.} Jag var visst inte så snabb... :)
Ett annat sätt:
<option value='ccc'" . ("ccc" == $varde ? " selected='selected'" : "") . ">
Ett andra alternativ för att inte köra en if sats varje rad är ju att sätta selected-option med JavaScript. Ett tredje alternativ är att sätta ihop allt till en sträng och sen ersätta "value='ccc'" med "value='ccc' selected='selected'".
Lite snabbare kod när den inte behöver göra en if-stats varje rad. Men känns som lite onödigt kludd...
GunnarDMedlem sedan juni 20014 290 inlägg Tackar, trodde faktiskt att det gick att göra direkt i html utan att koda med if satser i php.
Ett fjärde alternativ är att skriva typ:
$selected["value_ccc"] = " selected='selected'";
Och sen i sin lilla loop:
<option value='ccc'" . $selected["value_ccc"] . ">
Nog det smartaste om man bryr sig om prestanda och vill ha en snygg kod. :)