Warum selektiert nicht?

hume1991

Erfahrenes Mitglied
Hallo zusammen,

habe eine PHP Beispieldatei erstellt, das HTML Tags etc. fehlen ist hier Absicht, da es sich hier nur um Testzwecke handelt.

Habe folgendes Problem, Übergabe bei <option> ist nicht möglich, kennt jemand den Fehler?

test.php

PHP:
<?php

if ($_GET['Speichern'] == TRUE)
{


if (empty($_GET['Mail']) == TRUE
or  empty($_GET['Anrede']) == TRUE
or  empty($_GET['Agb']) == TRUE)
{
  echo "Es wurden nicht alle Felder ausgef&uuml;llt oder es wurde die AGB nicht akzeptiert";
}
}

if (isset($_GET['Anrede']) == 1)
{
  echo "<select>Herr</select>";
}





echo'

<form action="test.php" method="get">
<p>
Ihre E-Mail Adresse:
<input type="text" name="Mail" value="'.$_GET['Mail'].'" size="20" maxlength="50" />
</p>
<p> Anrede:
<select name="Anrede" size="3">
      <option value="1">Herr</option>
      <option value="2">Frau</option>
    </select>
    </p>

<p>
Vorname:
<input type="text" name="Vorname" value="" size="20" maxlength="50" />
</p>

<p>
Nachname:
<input type="text" name="Nachname" value="" size="20" maxlength="50" />
</p>

<p>
AGB akzeptiert?
<input type="checkbox" name="Agb" value="Ja"/>

</p>

<input type="submit" name="Speichern" value="Speichern" />
</form>';

?>

Edit: Falscher Code
 
Versuche es mal so:

PHP:
<select name="Anrede" size="3">
	<option value="1" <?php if(isset($_GET['Anrede']) && $_GET['Anrede'] == '1') echo "selected"; ?>>Herr</option>
	<option value="2" <?php if(isset($_GET['Anrede']) && $_GET['Anrede'] == '2') echo "selected"; ?>>Frau</option>
</select>
 
Hallo tombe,

deine Variante funktioniert

PHP:
<select name="Anrede" size="3">
    <option value="1" <?php if(isset($_GET['Anrede']) && $_GET['Anrede'] == '1') echo "selected"; ?>>Herr</option>
    <option value="2" <?php if(isset($_GET['Anrede']) && $_GET['Anrede'] == '2') echo "selected"; ?>>Frau</option>
</select>

Ist es auch so möglich?

PHP:
<p> Anrede:
<select name="Anrede" size="3">
      <option value="1"'.if(isset($_GET['Anrede']) && $_GET['Anrede'] == '1') echo "selected".'>Herr</option>
      <option value="1"'.if(isset($_GET['Anrede']) && $_GET['Anrede'] == '2') echo "selected".'>Herr</option>
    </select>
    </p>

Verstehe hierbei aber nicht ganz, warum er mir einen Fehler ausspuckt ;)
 
Weil du mit dem Punkt einen String verbindest:

PHP:
$text1 = "Hallo";
$text2 = "wie geht es dir?";
echo $text1 .$text2;
// Ausgabe "Hallo wie geht es dir?"

Schreib es mal so:

PHP:
echo '<p> Anrede:
<select name="Anrede" size="3">
      <option value="1"';
if(isset($_GET['Anrede']) && $_GET['Anrede'] == '1') echo "selected"
echo '>Herr</option>
      <option value="1"';
if(isset($_GET['Anrede']) && $_GET['Anrede'] == '2') echo "selected"
echo '>Herr</option>
    </select>';

NACHTRAG:

PHP:
<?php
$select = array("", "", "");
if (isset($_GET['Anrede'])) $select[$_GET['Anrede']] = "selected";

echo <<<sel
<select name="Anrede" size="3">
	<option value="1" $select[1] >Herr</option>
	<option value="2" $select[2] >Frau</option>
</select>
sel;
?>

Das wäre eine ganz andere Möglichkeit!
 
Zuletzt bearbeitet:
Und noch sicherer
PHP:
<?php
echo <<<sel
<select name="Anrede" size="3">
    <option value="1" {$select[1]} >Herr</option>
    <option value="2" {$select[2]} >Frau</option>
</select>
sel;
?>
 
Zurück