Avatar billede aquafisken Nybegynder
15. juli 2006 - 22:36 Der er 12 kommentarer og
1 løsning

Huske value i dropdown

Jeg sidder med et lille problem, hvor jeg har en funktion hvor der bliver tilføjet noget til en database, hvor der også bliver brugt 2 dropdown menuer til at vælge noget. Det virker fint nok, men mit problem kommer når jeg vil lave min rediger funktion, så vil jeg gerne have at den henter værdierne for mine dropdown menuer fra databasen så de 2 dropdown menuer bliver sat til det som de var sat til dengang der blev tilføjet noget data.
Hvordan laves det, jeg har prøvet onchange fuktionen og skrevet:
<select name='unit_section' onchange="<? $unit_section ?>">
bare uden noget resultat.
Avatar billede arriva Nybegynder
15. juli 2006 - 22:48 #1
Du skal sætte en property i dine <option> f.eks. <option selected="selected" ..>
Avatar billede arriva Nybegynder
15. juli 2006 - 22:50 #2
så når du populater dine <select>'s så laver du en simpel sammenligning og når din løkke når det item som oprindelig var valgt skal du tilføje selected="selected" til den option.
Avatar billede aquafisken Nybegynder
15. juli 2006 - 23:32 #3
Nu har jeg prøvet at lave noget efter det du skriver, men jeg kan ikke rigtig få det til at virke:
<select name='unit_section'>
<?php
            echo "<option value=\"WHLords\"";
            if ($unit_section == WHLords) {
            echo "selected=\"selected\"";
            }
            echo ">WH - Lords</option>";
           
            echo "<option value=\"WHHeroes\"";
            elseif ($unit_section == WHHeroes) {
            echo "selected=\"selected\"";
            }
            echo ">WH - Heroes</option>";

            echo "<option value=\"WHCore\"";
            elseif ($unit_section == WHCore) {
            echo "selected=\"selected\"";
            }
            echo ">WH - Core</option>";
?>
</select>
Hvad er det jeg gør galt?
Avatar billede arriva Nybegynder
15. juli 2006 - 23:45 #4
Først og fremmest skal du nok have nogle " om dine strings, og så skal du droppe elseif og bruge if's:
<?php
            echo "<option value=\"WHLords\"";
            if ($unit_section == "WHLords") {
            echo "selected=\"selected\"";
            }
            echo ">WH - Lords</option>";
           
            echo "<option value=\"WHHeroes\"";
            if ($unit_section == "WHHeroes") {
            echo "selected=\"selected\"";
            }
            echo ">WH - Heroes</option>";

            echo "<option value=\"WHCore\"";
            if ($unit_section == "WHCore") {
            echo "selected=\"selected\"";
            }
            echo ">WH - Core</option>";
?>
Det kunne måske også være lidt pænere at lave et array med værdierne og så bare en løkke(?)
Avatar billede aquafisken Nybegynder
16. juli 2006 - 00:08 #5
Tak for hjælpen, jeg havde godt prøvet at sætte " om mine strings, men fjernede dem igen fordi jeg troede det var det der gjorde fejlen, men at det bare skulle være if istedet for elseif troede jeg ikke.
Hvordan vil du sætte det op i et array, hvis det er?
Avatar billede arriva Nybegynder
16. juli 2006 - 01:03 #6
F.eks.:
Hvis du har mange af de her WH (WarHammer?) værdier er det måske en idé at hente dem fra din database i stedet, gør det nemmere for dig at tilføje/fjerne etc..

$myArray = array('WHLords','WHHeroes','WHCore');
foreach ($myArray as $x)
{
    echo "<option value=\".$x."\" ...
// og så self. din if-sætning etc.
}
Avatar billede aquafisken Nybegynder
16. juli 2006 - 12:36 #7
ok, så den går ind og siger at for hver (foreach) "værdi" er det lig med $x og der tager den så først den første i det array, hvor næste gang $x bruges så tager den den næste, er det rigtigt?
Avatar billede arriva Nybegynder
16. juli 2006 - 13:24 #8
altså, den tager hver værdi i array'et og ligger den i $x. Så repræsenterer $x for hver iteration en værdi f.eks. "WHLords". Det kan du så bruge til at lave dine options med. IF-sætningen bliver så:
if($x == $unit_section) echo "selected=\"selected\"";
Avatar billede aquafisken Nybegynder
16. juli 2006 - 20:02 #9
ok, tak for det, jeg vil lige se om jeg ka få det til at virke.
Avatar billede aquafisken Nybegynder
16. juli 2006 - 21:31 #10
Jo, det er Warhammer det handler om, det er noget jeg laver for en kammerat :)


Men jeg har prøvet at lave et dobbelt array fordi jeg vil gerne have de værdier der vituelt ses i dropdown boxen skrevet ud på den måde. Den skriver de info rigtigt ud i boxen, men den sætter ikke den rigtige værdi "select" når man går ind og skal redigere noget tekst, men tager bare den første i boxen.
Koden ser således ud:

<?php
$myArray = array('WHLords','WHHeroes','WHCore','WHSpecial','WHRare','WH40KHQ','WH40KElite','WH40KTroops','WH40KFastAtt','WH40KHeavy','BBKhemri','MoWDwarfs');
foreach ($myArray as $x)
$myArray2 = array('WH - Lords','WH - Heroes','WH - Core','WH - Special','WH - Rare','WH40K - HQ','WH40K - Elites','WH40K - Troops','WH40K - Fast Attack','WH40K - Heavy Support','Blood Bowl - Khemri','Man\'O\'War - Dwarfs');
foreach ($myArray2 as $y)
{
        echo "<option value=\".$x.\"";
        if ($x == $unit_section) {
        echo "selected=\"selected\"";
        }
        echo ">$y</option>";               
}
?>

Hvad er det lige jeg har gjort galt?
Avatar billede arriva Nybegynder
16. juli 2006 - 21:55 #11
hvis du vil gøre det sådan bør det nok nærmere være:
$myArray = array('WHLords' => 'WH - Lords','WHHeroes' => 'WH - Heroes','WHCore' => 'WH - Core');
foreach ($myArray as $key => $value)
{
    echo "<option value=\".$key."\"";
    if($key == $unit_section) echo " selected=\"selected\"";
    echo ">".$value."</option>";
}
Avatar billede aquafisken Nybegynder
17. juli 2006 - 00:18 #12
Tak for det, der var lige en \ der skulle flyttes, men ellers virker det fint...du må lige smide et svar :)
Avatar billede arriva Nybegynder
17. juli 2006 - 00:24 #13
super :)
et svar
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