Tach!
ich verstehe mal wieder etwas nicht. Und zwar wird ein Wert nicht in die Datenbank eingetragen.
Das ist zwar dein eigentliches Ziel, aber ist das Datenbank-Handling auch Teil des Problems?
Der Wert mit 1 wird eingetragen, wenn ich nur den ersten wähle also 0 wird nicht eingetragen, wähle ich beide aus, wird ebenfalls nicht eingetragen. Da es mit dem zweiten Wert also der 1 funktioniert gehe ich stark davon aus, es liegt an der 0. Diese benötige ich aber in der Datenbank.
Also wo konkret geht die 0 verloren - das ist hier die eigenliche Frage. Ob das DBMS-Handling schuld ist, kann man testen, indem man eine einfache Query erstellt ohne weiteren Schnickschnack drumherum.
Ich greife mal vor und löse den Teil auf, dass das Ergebnis sein wird, dass das problemlos geht. Also muss es an anderer Stelle hapern.
Wenn ich
var_dump($_POST["bereich"]);
ausgeben lasse, erhalte ich
array(2) { [0]=> string(1) "0" [1]=> string(1) "1" }
also beide Werte sind vorhanden?
Sehr schön bis hierher. Kontrollausgaben sind immer gut.
Was kann ich machen bzw. wo liegt überhaupt das Problem?
Nun hast du da aber auch noch zwei if
im Text. Verzweigt denn dein Code wie erwartet? Setz mal ein echo 'bin verzweigt und nicht verzweifelt';
oder ähnliches in den Anweisungsblock des if
.
Nachdem du nun gesehen hast, dass das Problem am zweiten if liegt, kann das Debugging dort weitergehen. Was liefert?
var_dump(is_array($_POST["bereich"]) && $_POST["bereich"][0]);
var_dump(is_array($_POST["bereich"]));
var_dump($_POST["bereich"][0]);
var_dump(boolval($_POST["bereich"][0])); // beachte das boolval()
Aha ... aber das wirst du ja selbst sehen.
Warum das Ergebnis so ist, steht im Handbuch unter Booleans - Converting to boolean. Ebenfalls nützlich sind die PHP type comparison tables.
dedlfix.