Georg: Select-Box: Auswahl eines Wertes abhängig von DB-Eintrag

Hallo,

sicherlich ist meine Frage recht dumm, aber ich komme einfach nicht auf eine "elegante" Lösung:
Ich habe in einer DB einen Wert aus einem Select-Form (statisch, 288 Optionen) gespeichert und möchte das dieser Wert (bzw. diese Optionsauswahl) automatisch als "selected" (ausgewählt) wieder dargestellt wird.
Da aber das select-Feld sehr viele Einträge enthält, möchte ich eigentlich nicht über "if (wert==auswahl)" gehen, da ich ja sonst diese if-Abfrage für jeden möglichen Wert einsetzten müsste.
Mein erster Denkansatz war, das Clientseitig per JS zu lösen, stehe aber dabei vor dem Problem, das ich zwar einer Option Selected zuweisen kann - aber dafür müsste ich ja den Indexwert der Option wissen da ich ja leider nicht direkt den Optionswert ansprechen kann (oder?)...
Ich denke das (wenn einer mein Problem anhand meiner Erklärung überhaupt versteht) ich sicher irgendwo einen Denkfehler habe oder das es sicher eine elegante Lösung hierfür gibt.

MfG
Georg

  1. echo $begrüßung;

    Ich habe in einer DB einen Wert aus einem Select-Form (statisch, 288 Optionen) gespeichert

    Definiere "statisch". Hast du 288 Mal <option value="wertX">Wert X</option> notiert? Dann wirst du da auch 288 Fallunterscheidungen einbauen müssen.
    Wenn du stattdessen nur die Werte wertX und Wert X in einer Datenstruktur liegen hast, dann kannst du beim Drüberlaufen und <option...-generieren auch das selected einfügen:

    $options = array(
      'wertX' => 'Wert X',
      'wertY' => 'Wert Y',
      ...
    );

    foreach ($options as $value => $displayValue)
      ...

    echo "$verabschiedung $name";

    1. Definiere "statisch". Hast du 288 Mal <option value="wertX">Wert X</option> notiert? Dann wirst du da auch 288 Fallunterscheidungen einbauen müssen.

      So schaut es wohl aus :-(.
      Die Auswahlliste ist eigentlich nichts anderes als eine Uhrzeitauswahl in 5-Minuten-Schritten (von 6.oo - 23.55) - und ja, leider nicht per Schleife sondern tatsächlich notiert.

      Besteht denn vielleicht per JavaScript die möglichkeit den jeweiligen Optionsindex herauszufinden ?
      Also "indexnr = document.formname.feldname.[options-WERT].indexnummer" ??
      Leider ist JS nun wirklich nicht das was ich behersche...

      MFG
      Georg

      1. Moin!

        Die Auswahlliste ist eigentlich nichts anderes als eine Uhrzeitauswahl in 5-Minuten-Schritten (von 6.oo - 23.55) - und ja, leider nicht per Schleife sondern tatsächlich notiert.

        Das kann man ja aber ändern, und eine Schleife draus machen. Und schon kannst du bei jedem zu generierenden Optionseintrag vergleichen, ob die zu erstellende Zeit identisch mit der vorausgewählten Zeit ist.

        Besteht denn vielleicht per JavaScript die möglichkeit den jeweiligen Optionsindex herauszufinden ?
        Also "indexnr = document.formname.feldname.[options-WERT].indexnummer" ??
        Leider ist JS nun wirklich nicht das was ich behersche...

        Dann solltest du von der Javascript-Lösung Abstand halten - zumal dir damit auch nicht wirklich geholfen wäre.

        Du hast eine so simple Schleife für die Optionen, dass es mich wundert, warum du da überhaupt zuerst die statische Komplettauflistung aller Uhrzeiten gewählt hast.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. $time = 6 * 3600; // repraesentiert 6 Uhr morgens sein
          for(i = 0: i < 288; i++)
          {
              $time_text = date('h:i', $time);   // Uhrzeit als Text (beginnt 6 Uhr morgens am 1.1.1970, Datum is dir ja eh wurscht)
              $selected = '';
              if($time_text == $db_wert)         // aktueller Schleifeneintrag = DB-Wert -> selected keyword anfuegen
                 $selected = ' selected';
              echo '<option'.$selected.'>'.$time_text.'</option>';
              $time += 300;  // addiere 5 Minuten
          }

          Hope it helps!