15. juli 2006 - 22:36Der 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.
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.
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>";
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=\"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(?)
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?
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. }
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?
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\"";
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:
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>"; }
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.