PHP-Error mit IF-Bedingungen?

Hallo,

ich möchte gerne in PHP eine einfache Auswahl abfragen. Auf einer HTML-Seite wird das Geschlecht durch die Methode POST (Formular) abgefragt, und soll darauf hin mit PHP durch eine Bedingung abgefragt werden. Sieht folgendermaßen aus:

HTML(Ausschnitt):
<form action="umfrage.php" method="POST" name="geschlecht">
<select name="geschlecht">
<option>maennlich</option>
<option>weiblich</option>
</select>
<input type="submit" value="Zur Auswertung" />

PHP(Ausschnitt):
<?php
$geschlecht=$_POST[geschlecht];
if ($geschlecht=="maennlich");
{
echo "Geschlecht:maennlich";
}
else if ($geschlecht=="weiblich");
{
echo "Geschlecht:weiblich";
}
?>


Wo liegt mein Fehler?
Vielen Dank für Eure Hilfe im Voraus!

Lg Sebastian

2013-09-14T03:00:27Z

@Horst:
Es geht immernoch nicht, es kommt:
Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\umfrage.php on line 15

2013-09-14T03:00:38Z

@Horst:
Es geht immernoch nicht, es kommt:
Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\umfrage.php on line 15

2013-09-14T03:00:39Z

@Horst:
Es geht immernoch nicht, es kommt:
Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\umfrage.php on line 15

Anonym2013-09-14T11:20:07Z

Beste Antwort

So wie Horst sin Lanz es gezeigt hat, müsste es funktionieren. Aber warum so kompliziert? Das Geschlecht ist doch schon in der Variablen $geschlecht enthalten.

<?php
  $geschlecht=$_POST['geschlecht'];
  echo $geschlecht;
?>

Quasimodos Klon2013-09-15T01:45:21Z

> if ($geschlecht=="maennlich");
heißt: wenn $geschlecht zu "maennlich" ausgewertet wird, tue nichts (leere Anweisung durch Semikolon abgeschlossen).
Danach erkennt der Parser einen Anweisungsblock, der nicht mehr zum IF gehört. Das folgende ELSE ist dann herrenlos.

Ebenso bei der Zeile
> else if ($geschlecht=="weiblich");

Wenn Du die Semikola entfernst, müßte das Script mit Warnmeldung funktionieren. Eine Warnung tritt auf, wenn das undefinierte Symbol geschlecht in $_POST[geschlecht] automatisch zum String konvertiert wird.
Syntaktisch korrekte Formen sind:
$geschlecht = $_POST[ 'geschlecht' ];
$geschlecht = "$_POST[geschlecht]";

Des weiteren ist es eine gute Angewohnheit, bei Vergleichen nicht die Auswertungsform zu verwenden sondern Identitätsvergleiche, also === statt ==. Nur wenn 0 == "0" == false == "" usw. sein soll, ist die Auswertungsform sinnvoll, ansonsten führt sie häufig zu schwer auffindbaren Bugs.

Anonym2013-09-14T09:57:02Z

Die Interpreterlogik von php stolpert über die 2 if's:
<?php
$geschlecht=$_POST[geschlecht];
if ($geschlecht=="maennlich")
{
echo "Geschlecht:maennlich";
}
else
{
echo "Geschlecht:weiblich";
}
?>

So müßte es laufen! Beachte dein falsches Semikolon nach dem ersten if!
Edit: Hatte Semikolon auch übersehen!