Berti2: Frage an die Meister

Einen wunderschönen guten Abend!
Aaalso, ich hab da ein kompliziertes PHP-Problem...
Ich lasse per while-Schlife u.a. eine Select-Box aus einer mySQL-Datenbank erstellen.
Wenn etwas anderes falsches eingegeben wurde, aber die Select-Box richtig selektiert wurde möchte ich auf einer Fehler-Seite die entsprechenden Daten die bereits ausgefüllt wurden auch per select selektieren.
Das sieht so aus:
echo "<option value="".$pu."">".$pu."</option>\n";
Wie schaffe ich es nun, dass die bereits getroffene Auswahl richtig angezeigt wird?
Ich hoffe mich versteht jemand...

  1. Ahoi Berti

    Aaalso, ich hab da ein kompliziertes PHP-Problem...

    Was hat der Fisch damit zu tun?

    Wie schaffe ich es nun, dass die bereits getroffene Auswahl richtig angezeigt wird?

    http://de.selfhtml.org/html/formulare/auswahl.htm#listen_vorselektiert

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Ahoi Kamerad!

      Das ist ja leider das Problem dass es so nicht geht.
      Die gesamt Select-Box mit zur Zeit ungefähr 15 Einträgen wird ja nur mit echo "<option value="".$pu."">".$pu."</option>\n"; gebildet.
      Ich wünschte ich könnte sowas besser erklären :(

  2. Hallo Berti2,

    Du hast ja den selectierten Wert in $_POST oder sowas. Sagen wir, der Besucher hat vorher in der Selectbox 'meineBox' den Wert 'meinWert' ausgewaehlt. Dann steht ja in $_POST['meineBox'] = 'meinWert'.  Sobald du $_POST hast, sagst du:
    if(!empty($_POST['meineBox']))
    {
      $selectierterWert = $_POST['meineBox'];
    }
    else
    {
      $selectierterWert = '';
    }
    oder eleganter
    $selectierterWert = !empty($_POST['meineBox']) ? $_POST['meineBox'] : '';

    In der while-Schleife kommt ja auch irgendwann 'meinWert' aus der Datenbank an, sagen wir aus dem Feld 'meinFeld'. Dann kannst Du das in der Schleife vergleichen und sagen
    while($data ...
    {
      if($data['meinFeld'] == $selectierterWert)
      {
        $selected = ' selected="selected"';
      }
      else
      {
        $selected = ' selected="selected"';
      }
      // $selected enthaelt jetzt bei einem Treffer den String ' selected="selected"'
      // ansonsten ist es leer
      // Dann befuellst Du die Variable $options wie gehabt
      $options .= '<option value="' . $data['meinFeld'] . '"' . $selected . '>....
      // $options enthaelt jetzt entweder
      // <option value="foo"> oder <option value="foo" selected="selected">

    Diese Loesung beruecksichtigt nicht, dass 'meinFeld' leer sein koennte und in diesem Fall kein Treffer gewollt ist, aber ich bin sicher, dass kriegst Du auch noch hin.

    Gruß,

    Dieter

    1. Ich hätte nicht gedacht dass es so kompliziert ist, aber es funktioniert!!
      Vielen Dank!

      1. Hallo Berti2,

        Ich hätte nicht gedacht dass es so kompliziert ist, aber es funktioniert!!

        Wenn's einfach waere, koennte es ja jeder, womit sollten wir dann hier prahlen?

        Vielen Dank!

        Gerngeschehn!

        Gruß,

        Dieter