Whitesnake: Drop-Down-Wert nach Absenden behalten

Ich hab folgendes Problem: Ich hab eine .php-Datei mit einem Formular (das Formular ist komplett in html) und die Absende-action ist die .php-Seite an sich. Das .php-Skript erkennt, ob die Seite zum ersten Mal aufgerufen wurde oder tatsächlich absenden gedrückt wurde.
Das Problem dabei ist nur, wenn ich auf Absenden drücke löschen sich logischerweise sämtliche Felder. Bei den Textfeldern kann ich den value wieder eintragen, aber wie löse ich es bei einer Drop-Down-Liste mit 30 Werten? Ich muss ja in jede Option eine php-Anweisung schreiben in der eine Variable ausgegeben wird (also im Falle einer Drop-Down-Liste "selected"). Nur wie weiß das Skript in welches dieser 30-Option-Element es reingeschrieben werden soll?
Es sieht im Quelltext so aus:
                        <option value="Deutsch" style='font-family:Verdana;font-size:10px;' <?php echo $option1; ?>>Deutsch</option>
                        <option value="Arabisch" style='font-family:Verdana;font-size:10px;' <?php echo $option2; ?>>Arabisch</option>
Was muss ich schreiben, damit der php-Teil der richtigen Option-Variable den Text "selected" einschreibt?

  1. Hello,

    Wenn doch das Formular in einer reinen HTML-Seite steht, die nicht geparst wird, wie kommt die dann auf den Request an das Script (ation="<script>") wieder zum Browser?

    Wird die Seite vom Script eingelesen und ausgeliefert?

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Ich hätte alles in einem php-Tag lassen können und HTML-Inhalte per echo ausgeben können. Da mir das aber zu umständlich ist werden Sachen die in php geschrieben sind mit <?php ?> quasi aktiviert.

      1. Hello,

        Ich hätte alles in einem php-Tag lassen können und HTML-Inhalte per echo ausgeben können. Da mir das aber zu umständlich ist werden Sachen die in php geschrieben sind mit <?php ?> quasi aktiviert.

        Du mischst also munter PHP-Sequenzen und -Funktionen und HTML-Code?

        Viel leichter verständlich ist die klare Trennung. Alle variablen HTML-Teile werden dabei vorher als String berechnet und dann später nur noch ausgegeben. So kann man nichts vergessen.

        Um die Selectbox also zu erzeugen, benötigst du mindestens vier Angaben:

        in meinem Beispiel kommt ein Array mit den CSS-Klassennamen dazu, das man
        vorher noch füttern muss...

        $_options[1] = 'Hotel';
        $_options[2] = 'Gasthof';
        $_options[3] = 'Pension';
        $_options[4] = 'Ferienwohnung';
        $_options[5] = 'Ferienzimmer';
        $_options[6] = 'Schlafsaal';
        $_options[7] = 'Wohnwagen';
        $_options[8] = 'Zelt';

        if (isset($_POST['unterkunft']) and is_array($_POST['unterkunft']))
        {
          $_selection = $_POST['unterkunft'];
        }
        else
        {
          $_selection[] = 1;
        }

        $_classes['select'] = 'sel_unterkunft';
        $_classes['option'] = 'opt_unterkunft';

        $select = make_selectbox('unterkunft','M',$_options,$_selection,$_classes);

        Die Klassen müssen natürlich im CSS definiert sein:

        <style type="text/css">
          <!--
          .sel_unterkunft
          {
            font-family:Century Gothic,Helvetica,Arial,sans-serif;
            font-size:12pt;
            width:200px;
            height:10em;
          }

        -->
          </style>

        Und dann brauchst Du $select später nur noch im HTML-Teil auszugeben, so wie du das ja jetzt auch schon machst.

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hello,

          Da war was verloren gegangen...

          Um die Selectbox also zu erzeugen, benötigst du mindestens vier Angaben:

          in meinem Beispiel kommt ein Array mit den CSS-Klassennamen dazu, das man
          vorher noch füttern muss...

          $_options[1] = 'Hotel';
          $_options[2] = 'Gasthof';
          $_options[3] = 'Pension';
          $_options[4] = 'Ferienwohnung';
          $_options[5] = 'Ferienzimmer';
          $_options[6] = 'Schlafsaal';
          $_options[7] = 'Wohnwagen';
          $_options[8] = 'Zelt';

          if (isset($_POST['unterkunft']) and is_array($_POST['unterkunft']))
          {
            $_selection = $_POST['unterkunft'];
          }
          else
          {
            $_selection[] = 1;
          }

          $_classes['select'] = 'sel_unterkunft';
          $_classes['option'] = 'opt_unterkunft';

          $select = make_selectbox('unterkunft','M',$_options,$_selection,$_classes);

          Die Klassen müssen natürlich im CSS definiert sein:

          #------------------------------------------------------------------------------
          function make_selectbox
          #------------------------------------------------------------------------------
          (
           $name,               # Name der Selectbox ohne []
           $type,               # S für sinlge, M für Multiple
           $_options,           # assoziatives Array mit den möglichen Optionen
           $_selection=array(), # indiziertes Array mit den letzten Post-Werten (Value=" ")
           $_classes=array()    # Array mit den Klassendefinitionen, die eingebunden werden
          )
          {
            if (strtolower($type)=='s' and count($_selection) > 0)
            {
              reset($_selection);
              $_selection = each($_selection);
            }

          $select = "\n<select name="".trim($name).'[]"'.
                                ((!empty($_classes['select']))?' class="'.$_classes['select'].'"':'').
                                ((strtolower($type)=='m')?' multiple':'').">\n";

          foreach($_options as $key => $val)
            {
              $select.='  <option'.(!empty($_classes['option'])?' class="'.$_classes['option'].'"':'')."\n".
                       "          value="$key"".(in_array($key,$_selection)?' selected="selected"':'').'>'.
                                   htmlentities($val)."</option>\n";
            }

          $select .= "</select>\n";

          return $select;
          }

          <style type="text/css">
            <!--
            .sel_unterkunft
            {
              font-family:Century Gothic,Helvetica,Arial,sans-serif;
              font-size:12pt;
              width:200px;
              height:10em;
            }

          -->
            </style>

          Und dann brauchst Du $select später nur noch im HTML-Teil auszugeben, so wie du das ja jetzt auch schon machst.

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau