Pulldown Position merken (nicht selected)

ronaldo84

Erfahrenes Mitglied
Hallo.

Ich habe auf dieser Seite 4-Menüs. Schnittkarte, Service, Videostation und Extras. Die Menüs werden mittels PHP erstellt und werden jedesmal neu gezeichnet, sobald jemand etwas aus einem Menu auswählt, da die onchange-Methode mit submit() belegt ist.. In dem Menü extras ist eine Mehrfachauswahl möglich. Wenn ich nun aus dem Menü "extra" aus dem unteren drittel etwas auswähle zeichnet er das Menü neu und springt deshalb an den Anfang des Menüs zurück. Ist es möglich auch die Position des ausgewählten Eintrages mit anzugeben und das das Menü dann über den ausgewählten Eintrag stehenbleibt?
Mit dem selected-Attribut sehe ich da keine Möglichkeit. Weiß jemand rat?
Hoffe ich habe mich verständlich ausgedrückt.
Danke

P.S. Auf der Seite müssen Cookies und Javascript aktiviert sein.
 
Falls das Auswahlmenü mit PHP generiert wird, müssten einfach nur die möglichen Werte mit dem aktuellen Wert verglichen werden.
 
Angenommen, das Element wird anhand eines Arrays ausgezeichnet, wäre Folgendes möglich:
PHP:
<?php

	$array = array(
		'Foo' => 'foo',
		'Bar' => 'bar'
	);

	echo '<select name="arg">';
	foreach( $array as $key => $value ) {
		echo sprintf(
			'<option value="%s"%s>%s</option>',
				htmlspecialchars($value),
				$value == $_REQUEST['arg'] ? ' selected="selected"' : '',
				htmlspecialchars($key)
			);
	}
	echo '</select>';

?>
 
Hm. Danke. Aber wird bei deinem Code nicht auch nur das selected Attribut festgelegt? Das habe ich ja schon selber gemacht. Ich poste mal etwas mehr code:
Code:
Function createPullDownMenu($dbArr, $ausgesucht, $dbtable)
  {  
    for($Anz = count($dbArr)-1; $Anz != -1; $Anz--)
      { 
 if($dbtable=="extras")
 {
  if($PDprodukt != $dbArr[$Anz]["produktgruppe"] || $PDprodukt == "")
           { 
             $PDprodukt= $dbArr[$Anz]["produktgruppe"]; //Gruppierung
      $PullDown .= "<option value='keine' style='background:#cccccc;'>$PDprodukt</option>"; //Nennen der Oberkategorie
           }
  $ArtNr = $dbArr[$Anz]["artnr"];
         $ArtName = $dbArr[$Anz]["name"];
  $Firmname = $dbArr[$Anz]["firma"];
   $PullDown .= "<option value='$ArtNr' style='color:#000000;' multiple='$FirmName' >$Firmname $ArtName</option>";
 }
 else
 {
         if($PDFirmName != $dbArr[$Anz]["firma"] || $PDFirmName == "")
          {
            $PDFirmName = $dbArr[$Anz]["firma"];
  if($PDFirmName!="")
  {$PullDown .= "<option value='keine' style='background:#cccccc;'>$PDFirmName</option>";}
          }
        $ArtNr = $dbArr[$Anz]["artnr"];
        $ArtName = $dbArr[$Anz]["name"];
 if($ArtName !="")
 {$PullDown .= "<option value='$ArtNr'>$ArtName</option>";}
 }
      }
    $temp = $ausgesucht;
 
    //Wiederholung nur für die Mehrfachauswahl (Extras)
    for($i = 0; $i < count($ausgesucht); $i++)
      {
        // immer wenn bei Extras etwas ausgewählt wurde
        if(is_array($ausgesucht)) 
          $temp = $ausgesucht[$i];
        //Fügt das 'selected' Attribut in den vorher ausgewählte Pulldown-Menü Eintrag ein
        if($temp && $temp != "keine" && $temp != "keine")
          { $PullDown = ereg_replace("<option value='$temp'", "<option selected value='$temp'", $PullDown); }
      }
    return $PullDown;
  }
Wobei $dbArr ein Array mit den Werten des DP-Menüs. Diese werden aus eine Mysql Tabelle geholt. $dbTable ist die Tabelle aus welchen das DP erstellt wird und $ausgesucht ist eine Variable, die das Element übergibt falls schon einmal etwas ausgewählt wurde.
 
Zurück