Moin!
Hallo Sven,
if ( $Verfassen ) { ... }
if ( $Eintragen ) { ... }Die obige Variante ist dabei ziemlich böse: Sie funktioniert immer dann, wenn der Variableninhalt von $Verfassen oder $Eintragen als "wahr" evaluiert. Es gibt aber auch Variableninhalte, bei denen der Ausdruck "falsch" wird, obwohl der Submit-Button geklickt wurde!
Jetzt hast Du mich aber neugierig gemacht. Kannst Du da mal ein Beispiel nennen, wo das nicht funktioniert?
Aber sicher: Siehe http://www.php.net/manual/de/language.expressions.php.
Dort steht im vorletzten Absatz vor den Userkommentaren:
"Der Wahrheitswert eines Ausdrucks in in PHP wird ähnlich bestimmt wie in Perl. Jeder numerische Wert, der nicht NULL ist, bedeutet WAHR, NULL bedeutet FALSCH. Es ist zu beachten, dass negative Werte nicht NULL sind und deshalb als WAHR aufgefasst werden! Eine leere Zeichenkette und die Zeichenkette "0" sind FALSCH; alle anderen Zeichenketten sind WAHR. Nicht-skalare Datentypen (Arrays und Objekte) werden als FALSCH betrachtet, wenn sie keine Elemente enthalten, anderfalls geben sie WAHR zurück."
Mit anderen Worten: Wenn der Submit-Button den Value "" oder "0" hat, wird der obige Ausdruck den Submit-Button niemals als geklickt ansehen. Das kann durchaus zu einem Problem werden: Angenommen, du hast zehn Submit-Buttons, die mit den Ziffern von Null bis Neun beschriftet sind, um z.B. ein Voting durchzuführen:
<input type="submit" name="button0" value="0">
Den wirst du niemals mit
if ($button0) { // Voting für Null }
entdecken können, weil der Wert "0" in der Variablen $button0 als "false" evaluiert wird.
Mit
if (isset($button0)) {...}
hingegen funktioniert alles.
Und am sinnvollsten ist natürlich, allen Submit-Buttons den gleichen Namen zu geben und nur den Value unterschiedlich zu gestalten, damit man ihn im Skript verwerten kann.
- Sven Rautenberg
Diese Signatur gilt nur am Freitag.