Moin!
if ($_POST['d1'])
Damit prüfst du aber nicht auf 0. Mal abgesehen davon, das eine Variable mit dem Inhalt 0 nicht leer ist.
Diese Zeile prüft, ob die Variable FALSE ist.
Nein, noch schlimmer!
Diese Zeile prüft, ob der Wert der Variablen zu "true" evaluiert - dann wird der IF-Block ausgeführt, sonst der ELSE-Block.
Alle Variablen evaluieren zu "true", außer sie evaluieren zu "false" in diesen Fällen:
$var = false; // Boolean
$var = 0; // Integer
$var = 0.0; // Fliesskommazahl
$var = NULL; // oder undefinierte Variable
$var = ""; // leerer String
$var = "0"; // String mit der Null
$var = array(); // leeres Array
sowie Objekte ohne Mitgliedsvariablen.
Siehe auch http://de.php.net/manual/de/language.types.boolean.php#language.types.boolean.casting
Mit anderen Worten: Man kriegt eine ganze Menge an Werten nicht, obwohl diese im Sinne der Programmlogik höchstwahrscheinlich als "true" gewerten werden sollten.
- Sven Rautenberg
"Love your nation - respect the others."