Tag Select = selected

Webgau

Mitglied
Servus,

ich bin gerade dabei mir nen kleines Script zu bastel, mit welchem ich verschiedene Templates darstellen möchte. Funktioniert auch alles soweit, nur das wenn ich ein Template auswähle und absende im Option Feld immer wieder die erste Auswahl erscheint. Also wenn ich z.B. das Template Mai auswähle und auf den submit Button klicke, kommt im select feld immer wieder der erste Tag also Template Portal, ich möchte aber immer das Aktuelle angezeigt haben also in diesem Fall template Mai.

Hier mal das Script:

PHP:
<form action="index.php" method="post">
	<select name="template">
    	<option value="portal">Template Portal 09</option>
        <option value="bos">Template August 09</option>
        <option value="juli">Template Juli 09</option>
        <option value="juni">Template Juni 09</option>
        <option value="mai">Template Mai 09</option>        
    </select>
<input type="submit" value="Los" />
</form>
</div>
<?php 
	$template = $_POST["template"];
	if (empty($template))
	{
		$template = "portal";
	}
?>
	<iframe src="<?php echo $template; ?>" width="100%" height="100%" name="demon" scrolling="yes" class="frame">
  	<p>Ihr Browser kann leider keine eingebetteten Frames anzeigen</p></iframe>

Grüße Mirko
 
Wenn du es umbedingt mit PHP lösen willst wird dir wohl kaum etwas anderes übrig bleiben also bei jeder option den jeweiligen Wert mit $_POST['template'] abzugleichen und im Erfolgsfall ein selected auszugeben.

PHP:
$tmp = $_POST['template'];

<option value="mai" <?php if($tmp == 'mai'){echo 'selected';} ?>>Template Mai 09</option>
 
Hey Webgau,

rd4eva hat vollkommen recht. Das mach du mit dem selected befehl, aber 100% korrekt lautet der eintrag
PHP:
<?php if($template=="mai "){echo'selected="selected"';}?>
Geht um das selected = selected. Also laut W3C soll es so sein.

Das Problem, dass du hast, beschäftigt mich seit Tagen und bereitet mir schlaflose Nächte.

Ich muss sehr viele von diesen Selection Lists erstellen und Formualrfeldern etc. und es ist extrem nervig immer wieder Zeile für alles extre einzutragen.

Falls du ebenfalls mehr als nur 5 Optionen darstellen willst, habe ich vielleicht eine extrem geniale Technick für dich.
sag bescheid^^

Gruß, Adnan


EDIT: Der Form halber würde ich dir empfehlen oben folgenden Code zu verwenden, den kannst du nämlich immer wieder verwenden:

Code:
<form action = "<?php echo $_SERVER['SCRIPT_NAME'] ?>" method = "post" enctype = "multipart/form-data">

EDIT2:
Ach und Webgau, deinen 6-zeiligen PHP-Block kannst du komplett weglassen. Ist sogenannter Trash-Code. Der Server macht eh das, was du da programmiert hast^^
 
Zuletzt bearbeitet:
Vielen Dank,

habe es wie folgt gelöst

PHP:
<?php 
	$template = $_POST["template"]; 
	if($template == "portal")
	{
		$portal = ' selected="selected"';
	}
	else if($template == "bos")
	{
		$bos = ' selected="selected"';
	}
	else if($template == "juli")
	{
		$juli = ' selected="selected"';
	}
	else if($template == "juni")
	{
		$juni = ' selected="selected"';
	}
	else if($template == "mai")
	{
			$mai = ' selected="selected"';
	}

?>
<form action="index.php" method="post">
	<select name="template">
    	<option value="portal"<?php echo $portal;?>>Template Portal 09</option>
        <option value="bos"<?php echo $bos;?>>Template August 09</option>
        <option value="juli"<?php echo $juli;?>>Template Juli 09</option>
        <option value="juni"<?php echo $juni;?>>Template Juni 09</option>
        <option value="mai"<?php echo $mai;?>>Template Mai 09</option>        
    </select>
<input type="submit" value="Los" class="button" />
</form>

will es ganz einfach halten :D

Grüße Mirko
 
Zurück