Avatar billede doncarnage Nybegynder
18. februar 2009 - 16:44 Der er 4 kommentarer og
2 løsninger

Select/dropdown menu med selected value ud fra databasen

Halløjsa..

Jeg er i den situation at jeg er ved at lave et lille redigerings system, hvori en slags rating indgår..

Når jeg vil redigere en "side" bliver den nødvendige information hentet i tekstbokses som den skal vha:
(<?php echo $row['xxx']; ?>"'

Men når jeg forsøger at gøre det i min select/dropdown menu volder det lidt problemer.. Jeg kan godt få den til at være selected på den rating som den har fået tildelt vha. nedenstående:

<select name="rating" class="input5">
<option value='<?php echo $row['rating']; ?>"'><?php echo $row['rating']; ?></option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</select>

Men da den pågældende rating er et tal iblandt 1-5 så vil tallet stå der to gange, hvilket jeg ikke er så glad for.. Hvis rating fx er sat til 4 vil den udskrive følgende i dropdownmenuen:
------
4
1
2
3
4
5
------

Mit spørgsmål lyder derfor på hvordan jeg automatisk får den til at "hoppe ned" på den valgte rating uden at skulle oprette en ekstra value som jeg har gjort ovenover?
Avatar billede jokkejensen Novice
18. februar 2009 - 16:54 #1
<option selected="selected" value="5">5</option>

Så du skal altså se hvad $row[rating] er og sætte selected=selected på den option
Avatar billede doncarnage Nybegynder
18. februar 2009 - 17:08 #2
Hvis jeg forstår dig ret vil du have mig til at lave det sådan her:

<select name="rating" class="input5">
<option selected="selected" value="<?php echo $row['rating']; ?>"><?php echo $row['rating']; ?></option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</select>

Her laver den dog samme nummer med at lave et ekstra felt:
x
1
2
3
4
5

Har jeg misforstået dig :)?
Avatar billede jokkejensen Novice
18. februar 2009 - 17:35 #3
<select name="rating" class="input5">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3' selected="selected">3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</select>

Skal output være.
Avatar billede doncarnage Nybegynder
18. februar 2009 - 17:41 #4
Ehm... så vælger den jo blot 3 pr. default og ikke den rating som siden har fået og er sat til i databasen :S
Avatar billede doncarnage Nybegynder
18. februar 2009 - 18:12 #5
Nå.. Jeg fandt selv til en måde nu hvorpå det kunne lykkedes med en masse else if sætninger.. Det er måske ikke den smarteste måde at lave det på, men det virker i hvert fald ;)

Smider lige koden her hvis andre skulle få brug for det på et tidspunnkt:

            <select name="rating" class="input5">
              <?php
            if($row['rating'] == 1)
            {
            echo "<option value='1' selected='selected'>1</option>";
            echo "<option value='2'>2</option>";
            echo "<option value='3'>3</option>";
            echo "<option value='4'>4</option>";
            echo "<option value='5'>5</option>";
            }
            else if ($row['rating'] == 2)
            {
            echo "<option value='1'>1</option>";
            echo "<option value='2' selected='selected'>2</option>";
            echo "<option value='3'>3</option>";
            echo "<option value='4'>4</option>";
            echo "<option value='5'>5</option>";
            }
            else if ($row['rating'] == 3)
            {
            echo "<option value='1'>1</option>";
            echo "<option value='2'>2</option>";
            echo "<option value='3' selected='selected'>3</option>";
            echo "<option value='4'>4</option>";
            echo "<option value='5'>5</option>";
            }
            else if ($row['rating'] == 4)
            {
            echo "<option value='1'>1</option>";
            echo "<option value='2'>2</option>";
            echo "<option value='3'>3</option>";
            echo "<option value='4' selected='selected'>4</option>";
            echo "<option value='5'>5</option>";
            }
            else if ($row['rating'] == 5)
            {
            echo "<option value='1'>1</option>";
            echo "<option value='2'>2</option>";
            echo "<option value='3'>3</option>";
            echo "<option value='4'>4</option>";
            echo "<option value='5' selected='selected'>5</option>";
            }
            ?> 
            </select>
Avatar billede majbom Novice
18. februar 2009 - 19:21 #6
<select name="rating" class="input5">
<?php
$sel = "";
for($i=1;$i<6;$i++){
  if($row['rating']==$i){$sel="selected";}
  echo "<option value=\"".$i."\" ".$sel.">$i</option>";
  $sel = "";
}
</select>
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