carrie: Select-Auswahlliste mit Gedächtnis?

Hallo, ich möchte ein Mail-Formular mittels PHP u.a. darauf überprüfen lassen, ob eine gültige E-Mail-Adresse vorhanden ist. Falls nein, soll das gesamte Formular mittels des echo-Befehls von php neu ausgegeben werden und in den Formularfeldern sollen die bereits gemachten Eingaben stehenbleiben. Wie erreiche ich das bei der Select-Auswahlliste?

  1. hi,

    in den Formularfeldern sollen die bereits gemachten Eingaben stehenbleiben. Wie erreiche ich das bei der Select-Auswahlliste?

    in dem du Einträge vorselektieren liest, und per PHP dafür sorgst, dass der dafür notwendige code erzeugt wird.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi,

    Hallo, ich möchte ein Mail-Formular mittels PHP u.a. darauf
    überprüfen lassen, ob eine gültige E-Mail-Adresse vorhanden ist.
    Falls nein, soll das gesamte Formular mittels des echo-Befehls von
    php neu ausgegeben werden und in den Formularfeldern sollen die
    bereits gemachten Eingaben stehenbleiben. Wie erreiche ich das bei
    der Select-Auswahlliste?

    vom prinzip her wie bei einem textfeld.
    <input type="text" value="<? echo $_POST['textfeld']; ?>" name="textfeld">

    nur halt etwas umständlicher. und zwar
    <select name="selectauswahlliste">
    <option value="1" <? if($_POST['selectauswahlliste']=="1"){ echo "selected";}?> >1</option>
    </select>

    MfG

  3. Hallo, ich möchte ein Mail-Formular mittels PHP u.a. darauf überprüfen lassen, ob eine gültige E-Mail-Adresse vorhanden ist. Falls nein, soll das gesamte Formular mittels des echo-Befehls von php neu ausgegeben werden und in den Formularfeldern sollen die bereits gemachten Eingaben stehenbleiben. Wie erreiche ich das bei der Select-Auswahlliste?

    wie generierst du denn das select feld? mit einer Schleife?

    ich mache es etwa so:

    while(list($key, $val) = each($dein_array))
    {
       if(isset($_GET['select_name']) && $_GET['select_name'] == $key)
       echo "<option value=$key selected>$val</option>";
       else
       echo "<option value=$key>$val</option>";
    }

    das ganze nervt schon, wenn man das bei jedem Formular machen muss.
    Habe daher mal versucht, mir eine FORM-Klasse zu machen, die das alles handelt, aber praktisch gesehen, hat man damit nicht weniger aufwand, diese Klasse zu benutzen.

    ging etwa so:

    class DropDownList
    {
       var selected;
       var options;
       ....

    function output
       {
         while(list($key, $val) = each($this->options))
         {
         if(isset($_GET['select_name']) && $_GET['select_name'] == $key)
         echo "<option value=$key selected>$val</option>";
         else
         echo "<option value=$key>$val</option>";
         }
       }

    }

    $ddl = new DropDownList();
    echo $ddl->output();

    Eigentlich ne tolle Idee, nur muss du dann dein ganzes Formular mit solchen Klassen aufbauen am besten, und da ist oft schneller gemacht, wenn du gerade den HTML Code hinschreibst.

    (man muss natürlich noch viel mehr in die Klasse ein bauen. Ich hatte z.B. noch alle Eigenschaften mit rein genommen. Und das <select> musste man auch noch unterbringen, und und und...)

    Gruß
    Christian

  4. Hello,

    ich habe hier eine kleine Funktion für Dich:

    #------------------------------------------------------------------------------
    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;
    }

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

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