Avatar billede butcher Nybegynder
23. marts 2004 - 14:42 Der er 8 kommentarer og
1 løsning

Hente data ud i en select box

Har et dokument hvor jeg kan redigere i nogle oplysning der bliver trukket ud fra en database og så kan ligge dem ind i databasen igen. Jeg har en masse input forms hvor jeg let trækker data ud i med:
value="<?=$row[id];?>" i mit tilfælde, men så har jeg nogle <select>

Hvordan trækker jeg ud fra min database, så min selectbox står på det der, som der står i databasen.

F.eks. står der 4 i rating feltet i databasen, skal det se sådan her ud:

<select name="rating">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected>4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
Avatar billede krydset Nybegynder
23. marts 2004 - 14:52 #1
Avatar billede astengaard Nybegynder
23. marts 2004 - 15:00 #2
Du laver en for-løkke, som bygger din selectbox op.
Eksempel:

<select name="rating">
<?php
$dbValue = $row[rating] // Rating fra database
for($i=1;$i<7;$i++) {
  if($i == $dbValue) $selected = " selected";
  else selected = "";
  echo("<option value=$i".$selected.">$i</option>");
} ?>

Jeg har ikke lige testet det, men det burde fungere.
Hvis de data du skal have i select-boxen ikke er en talsekvens, som du kan putte i en for-løkke, så må du lave hver enkelt option, og så lave en if-sætning i hver option som tester om option-værdien er lig med database-værdien, og hvis den er, så skriv selected.
<option value="test" <?php if($dbValue=="test") echo(" selected");?>>test</option>
Avatar billede butcher Nybegynder
24. marts 2004 - 15:30 #3
Jeg prøvede med:

<p><select name="rating">
<?php
$dbValue = $row[rating] // Rating fra database
for($i=1;$i<6;$i++) {
  if($i == $dbValue) $selected = " selected";
  else selected = "";
  echo("<option value=$i".$selected.">$i</option>");
} ?>
</p>

Men så brokker den sig sq noget med Parse error: parse error, unexpected T_FOR in c:\program files\apache group\apache\htdocs\dvd\ret.php on line 45

linie 45 er for($i=1;$i<6;$i++) {

:/
Avatar billede astengaard Nybegynder
25. marts 2004 - 09:54 #4
Min fejl, der mangler et semikolon i linie 44:
$dbValue = $row[rating]; // Rating fra database

$row[rating] er bare et eksempelnavn. Jeg ved ikke præcist, hvad den hedder i deit tilfælde. Det er en variabel der holder rating-værdien fra databasen.
Avatar billede butcher Nybegynder
25. marts 2004 - 10:44 #5
Jo så kom vi et tak vidre, men nu brokker den sig over linie 58:
Parse error: parse error, unexpected '=' in c:\program files\apache group\apache\htdocs\dvd\ret.php on line 58

linie 58 er: else selected = "";

$row[rating] er korrekt nok :)
Avatar billede astengaard Nybegynder
25. marts 2004 - 16:26 #6
Aaarrgh, jeg skulle måske have testet det først...
Der mangler et dollar-tegn:

else $selected = "";
Avatar billede butcher Nybegynder
26. marts 2004 - 09:05 #7
Jamen det er jo helt fantastisk :D

Virker perfekt, smart, så vil jeg rodde med jeg kan få det til at virke med de andre select boxe som ikke bruger tal ud fra det du skrev i dit første indlæg.

Jeg takker for hjælpen, og vender nok tilbage :)
Avatar billede butcher Nybegynder
26. marts 2004 - 09:17 #8
Men det var ikke så svært, lige ud af landevejen med det eksmepel du havde givet mig, takker igen :)
Avatar billede astengaard Nybegynder
26. marts 2004 - 11:33 #9
Det var så lidt
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