Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

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

Update:

@Horst:

Es geht immernoch nicht, es kommt:

Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\umfrage.php on line 15

Update 2:

@Horst:

Es geht immernoch nicht, es kommt:

Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\umfrage.php on line 15

Update 3:

@Horst:

Es geht immernoch nicht, es kommt:

Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\umfrage.php on line 15

3 Antworten

Bewertung
  • Anonym
    vor 8 Jahren
    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;

    ?>

  • vor 8 Jahren

    > 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.

  • Anonym
    vor 8 Jahren

    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!

Haben Sie noch Fragen? Jetzt beantworten lassen.