Avatar billede peps Nybegynder
29. april 2004 - 18:16 Der er 6 kommentarer og
1 løsning

Vise valgte <option> efter opdatering

Jeg har en masse select boxes, som brugere så kan vælge nogle ting i f.eks.:
<tr>
<td><h3>Kaffemaskine:</td>
    <select name='kaffe' value='$kaffe'>
<option>-</option>
<option>Ja</option>
<option>Nej</option>
</select>
</tr>

Men så skal jeg bruge et script, så næste gang man se siden, læser den værdien fra databasen, og viser den i select boxen.
Avatar billede Slettet bruger
29. april 2004 - 18:40 #1
<?PHP
// husk database tilslutning
$query = mysql_query("SELECT * FROM foo") or die(mysql_error()); // dit udtræk
$row = mysql_fetch_array($query);

echo '
    <select name="kaffe">
      <option selected>'.$row["kaffe"].'</option>
    </select>
';
?>
Avatar billede olebole Juniormester
30. april 2004 - 01:30 #2
<ole>

Mon ikke de skrives ud i en løkke?

$buffer = "<select name=\"kaffe\">";
while ( $row=mysql_fetch_assoc($res) ) {
  $sel = ($_POST["kaffe"]==$row["value"])? " selected" : "";
  $buffer .= "<option value=\"".$row["value"]."\"".$sel.">".$row["text"]."</option>";
}
$buffer .= "</select>";
print $buffer;

Det er i øvrigt god kodeskik altid at skrive en value i en option  ;o)
Men hvor i al verden kommer value'en '$kaffe' dog fra i dit select-tag? Det må være (er!) en fejl.

/mvh
</bole>
Avatar billede rasmus-madsen Nybegynder
03. maj 2004 - 11:15 #3
hejza hvis har fostået det rigtigt vil du havde select boxsene til at selecte den værdi som der er gemt i databasen ikke.:
Først kører du en løkke igennem som Olebole siger.
Så finder du ud af hvilken værdi som der skal selectes. Den værdi ligger du i $vaerdi. $Textboks er den streng boksen ligger i.

$Textboks .=preg_replace('/"('. $vaerdi .')">/', '"\\1" selected="selected">', $Textboks);

Håber du kan bruge det, for det virker....
Avatar billede olebole Juniormester
03. maj 2004 - 17:50 #4
rasmus-madsen >> Kører man min løkke igennem, er den pågældende select allerede sat. Der er ingen grund til at køre RegExps på de options, der skal skrives  :)

Denne linie:
  $sel = ($_POST["kaffe"]==$row["value"])? " selected" : "";
sammenligner den værdi, der blev sendt med fra formen med den, der bliver trukket fra databasen.
Er de forskellige, vil '$sel' indeholde en tom streng. Er de derimod ens, vil '$sel' indeholde strengen ' selected'.

Herefter er det blot at skrive variablen '$sel' ind i den aktuelle option:
  $buffer .= "<option value=\"".$row["value"]."\"".$sel.">".$row["text"]."</option>";

... simple as that (og en del hurtigere)  :)
/mvh
Avatar billede rasmus-madsen Nybegynder
03. maj 2004 - 18:17 #5
ok fair nok ... Du har ret ..
Avatar billede peps Nybegynder
03. maj 2004 - 20:30 #6
I må undskylde at jeg ikke har svaret, men da det var en side jeg skulle lave til et eksamensprojekt, har jeg haft rimelig travlt.
Projektet er afleveret i dag så jeg har desværre ikke noget at gøre brug af scriptet, men Olebole, du må godt angive dit som svar, og få points for spørgsmålet
Avatar billede olebole Juniormester
03. maj 2004 - 20:36 #7
... s'gerne  :)
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