• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

select option vorauswahl

Cheffchen

Senior HTML'ler
Hallo leuts,

mal eine frage am rande, wie am besten select Auswahl beim zweiten aufruf alte auswahl vor auswählen?
Oh man, ich versuche es mal im detail.

Ein Seite wo am ende ein echo ist mit dem ganzen HTML zeug, dort ist ein Formular drin mit text und select feldern.
Nach Senden wird das an sich selber geschickt und am anfang der Datei alles geprüft und wenn alles schick in session speichern und weiter zur nächsten Seiten.
Wenn Textfeld aber ein fehler ist, wird die gleiche Seite noch mal angezeigt und alle richtigen felder sollen mit den alten eingaben natürlich wieder angezeigt werden, bei textfeld ja kein problem aber select?
Aktuell mach ich immer switch abfrage für die Prüfungen aber wie die vorauswahl am einfachsten ohne da jetzt mit zich variablen und zich zeilen code rum zu machen pro option?
Wie macht ihr das den?

HTML:
<?php 


echo '
...

        <select name="scheibe" size="1">
          <option value="">wählen</option>
          <option value="1">ja</option>
          <option value="0">nein</option>
          ...
        </select>


<input type="text" name="anzahl" value="'.$auswahl['anzahl'].'"> geht
...
';
?>

Cheffchen
 
Werbung:
Eine Möglichkeit:

PHP:
 <option value="0"<?php if( $auswahl['scheibe']==0){?> selected="selected"<? } ?>>nein</option>
 
Mein Ansatz wäre, das Formular nicht per HTML zu versenden.

Eine JS-Validierung, die bei Fehlern den Submit blockt. Im Erfolgsfall werden die Daten per Ajax übergeben und ein Redirect auf die nächste Seite durchgeführt..
 
Werbung:
Hallo,

hm habe gar keine infos über Antworten bekommen?

der anzatz mit dem if in den option hatte ich auch immer aber da musst ja immer isset auch noch machen sonnst spuckt ja php warnung aus und das war mir zu viel PHP im html code.

Das mit JS und Formular tu ich mich immer noch etwas schwer aber werde mich da wohl anfeunden müssen, prüfungen mach ich mit jquery aber mit senden und so eher selten.

Ich habe jetzt eine function geschrieben die das macht und war eigentlich gar nicht so schwer, hätte ich schon vor 2Jahren machen sollen :O).


Oben die switch ist meine normale verarbeitung/prüfung nach senden wo das dann in DB oder session gespeichert wird.

Ist vielleicht nicht die beste möglichkeit aber mehr ist mir nicht eingefallen und erleichtert mir das ungemein und vielleicht auch mal jemand anderen oder hilft als idee.
PHP:
<?php
if(!empty($_POST)){
         switch($_POST['test']){
                  case '0':
                           $auswahl['test']['0']='1';
             break;
                  case '1':
                           $auswahl['test']['1']='1';
             break;

         }
}



function select($name,$inhalt,$wahl){
    global $auswahl;
    $x ='<select name="'.$name.'" id="'.$name.'" size="1">';
    $x.='<option value="">'.$wahl.'</option>';
     foreach ($inhalt as $key => $value){
        $x.='<option value="'.$key.'" '.(( isset($auswahl[$name][$key]) && $auswahl[$name][$key]=="1" )? "selected" : "").'>'.$value.'</option>';
        }
    $x.='</select>';

    return ($x);
}


echo '
<html>
...

      <p>
        <label>teste(n)</label>
             '.select("test",array('1'=>'ja','0'=>'nein','2'=>'vielleicht'),"[ wählen ]").'
      </p>
...
</html>
';
?>

Cheffchen
 
Zurück
Oben