inspiron: Selectfeld aus DB füllen und Auswahl nach versenden erhalten

Hallo,
ich habe in einem Formular ein Selectfeld welches beim versenden des Formulars die letzte Auswahl behält.
Nun möchte ich ein Selectfeld haben welches aus einer DB gefüllt wird und die letzte Auswahl nach dem Versenden des Formulars erhalten bleibt.
Wie kann ich beides kombinieren?

Gruß

...wir aus DB gefüllt:

  
<select name="SCHICHT" id="SCHICHT" <?php if(isset($errorFelder['SCHICHT'])) echo 'class="error"'; ?>>  
<?php  
    mysql_connect( $mysqlhost, $mysqluser, $mysqlpwd);  
    mysql_select_db($mysqldb);  
  
    $sql = "SELECT * FROM dropdown_schicht ";  
    $result = mysql_query($sql);  
        while ($row = mysql_fetch_array($result)) {  
        echo "<option>" . $row['schicht'] . "</option>";  
        }  
?>  
</select>  

...Auswahl bleibt erhalten:

  
<label class="schicht">Schicht</label>  
   		<select name="SCHICHT" id="SCHICHT" <?php if(isset($errorFelder['SCHICHT'])) echo 'class="error"'; ?>>  
			<?php //Beim Senden eines Formulars die gewählte Auswahl in der Auswahlliste beibehalten.  
			$array = array(1 => "Bitte auswählen! ", "PP1.1", "PP1.2", "PP1.3", "*", "PP2.1", "PP2.2", "PP2.3", "*", "FW3.1", "FW3.2");  
  
			   for ($a = 1; $a <= 11; $a++) {  
	 	 	 	echo " <option value=\"$array[$a]\"";  
	 	 	 	if ($_POST["SCHICHT"] == $array[$a]) {  
	  		  	 echo " selected";  
	 		 	}  
	 		   else {  
	  		 	if ($_POST["SCHICHT"] == "" && $a == 1) {  
	   		 	 echo " selected";  
	  			}  
	 			}  
	 		 	 echo ">$array[$a]</option>\n";  
		   	   }  
			?>  
   		</select>  

  1. Tach!

    ich habe in einem Formular ein Selectfeld welches beim versenden des Formulars die letzte Auswahl behält.
    Nun möchte ich ein Selectfeld haben welches aus einer DB gefüllt wird und die letzte Auswahl nach dem Versenden des Formulars erhalten bleibt.
    Wie kann ich beides kombinieren?

    Was ist das konkrete Problem daran? Eine Vorauswahl wird in jedem Fall mit dem Attibut selected realisiert. Das einzufügen ist bei jeder Art von Datenquelle prinzipiell gleich.

    dedlfix.

    1. Tach!

      ich habe in einem Formular ein Selectfeld welches beim versenden des Formulars die letzte Auswahl behält.
      Nun möchte ich ein Selectfeld haben welches aus einer DB gefüllt wird und die letzte Auswahl nach dem Versenden des Formulars erhalten bleibt.
      Wie kann ich beides kombinieren?

      Was ist das konkrete Problem daran? Eine Vorauswahl wird in jedem Fall mit dem Attibut selected realisiert. Das einzufügen ist bei jeder Art von Datenquelle prinzipiell gleich.

      dedlfix.

      Hallo,
      das verstehe ich jetzt nicht.
      Wenn ich in dem aus der DB gefüllte Selectfeld eine Auswahl tätige, dann verschwindet die Auswahl nach dem versenden. Das soll nicht so sein!
      Wie kann ich die Auswahl erhalten?
      Gruß

      1. Hi,

        Wenn ich in dem aus der DB gefüllte Selectfeld eine Auswahl tätige, dann verschwindet die Auswahl nach dem versenden. Das soll nicht so sein!
        Wie kann ich die Auswahl erhalten?

        In dem du das Attribut „selected“ bei der richtigen Option wieder ausgibst.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. In dem du das Attribut „selected“ bei der richtigen Option wieder ausgibst.

          Hallo,
          ich habe mal was versucht, habe leider kein Erfolg.
          Im Selectfeld erscheint nur 11x "array".

          Jetzt klemmt bei mir 'ne Hirnzelle ;-)

          Gruß

            
          <select name="SCHICHT" id="SCHICHT">  
          <?php  
          $sql = 'SELECT * FROM dropdown_schicht';  
          $result = mysql_query($sql) OR die(mysql_error());  
          $anzahl = mysql_num_rows($result);  
          $row = array();  
          while ($row[] = mysql_fetch_assoc($result));  
            
          		for($a = 0; $a < $anzahl; $a++){  
          		echo " <option value=\"$row[$a]\"";  
          	 	 if ($_POST["SCHICHT"] == $row[$a]) {  
          	  	  echo " selected";  
          	 	 }  
          	 	else {  
          	  	 if ($_POST["SCHICHT"] == "" && $a == 0) {  
          	   	  echo " selected";  
          	  	 }  
          	 	}  
          	 	  echo ">$row[$a]</option>\n";  
          		}  
          ?>  
          </select>  
            
          
          
          1. Tach!

            Im Selectfeld erscheint nur 11x "array".
            Jetzt klemmt bei mir 'ne Hirnzelle ;-)

            Kontrollausgaben helfen, verklemmte Hirnzellen zu entklemmen. Also erstmal schauen, was da wirklich in den verwendeten Variablen steht (var_dump()) und dann mit weiteren Kontrollausgaben nachvollziehen, wo der Wert herkommt.

            while ($row[] = mysql_fetch_assoc($result));

            Und dann versuch doch mal einem Außenstehenden (zum Beispiel deiner verklemmten Hirnzelle) zu erklären, was dieser Ausdruck macht, inklusive solcher Feinheiten, wozu jetzt welche Klammer und welches anderen Syntaxzeichen notwendig sind.

            dedlfix.

      2. Tach!

        Wenn ich in dem aus der DB gefüllte Selectfeld eine Auswahl tätige, dann verschwindet die Auswahl nach dem versenden. Das soll nicht so sein!
        Wie kann ich die Auswahl erhalten?

        Weder verschwindet sie, noch kann sie erhalten werden. Wenn der Browser einen Request stellt (was auch beim Absenden eines Formulares der Fall ist), dann muss im ausgelieferten Dokument das selected-Attribut bereits im Code stehen, wenn dieser Eintrag ausgewählt sein soll. In deiner Array-Variante setzt du dieses Attribut, in deiner DB-Variante hast du keinerlei Code drin, der sich darum kümmert. Da ist also nichts, was den Browser zu einer Vorauswahl bewegen könnte. Du musst das im Prinzip so wie bei der Array-Variante einbauen.

        dedlfix.