[PHP] Warum ist 0 leer? -.-

epic

De Puta Brot :D
ID: 49135
L
1 Mai 2006
155
3
Ich habe folgendes Problem in meinem Mitarbeiterverwaltungstool, welches auf PHP und MySQL basiert:

Jeder Mitarbeiter hat eine Berechtigung (so wäre es geplant gewesen: 0 = kein Admin, 1 = Adminrechte).

Jedoch tritt nun folgendes Problem auf:

Ich lege einen neuen Mitarbeiter an mit meinem Formular und wenn ich dann ins Berechtigungsfeld 0 reinschreibe und senden drück kommt die Fehlermeldung "bitte füllen sie alle felder aus" , was mir nach kurzem überlegen sagt: Wenn ich da ne 0 reinschreiben will, ist das Feld leer.

In der Datenbank habe ich zuerst probiert mit nem Tinyint und dann mit nem normalen Int.

Ich komm nicht drauf, wie das geht, weiß da jemand warum das so ist?

Dankesehr!
 
[...] kommt die Fehlermeldung "bitte füllen sie alle felder aus"

Die Fehlermeldung wird wohl kaum vom MySQL direkt kommen, insofern dürfte es wenig bringen, da an den Datentypen zu spielen. Die Fehlermeldung wird wohl eher von einen PHP-Schnippsel erzeugt, der "eigenmächtig" die Eingaben prüft und moniert, was ihm daran nicht gefällt. Den Wert 0 mag er scheinbar nicht.

Du wirst wohl nicht umhin kommen, diese Stelle in Deinem PHP-Script zu suchen und geeignet anzupassen (oder falls Du gar nicht damit klar kommst, die betreffende Stelle [nein, nicht das ganze Script] hier zu posten).
 
Jaja schon klar, dass die Fehlermeldung ich geschrieben habe :)

Bin gerade drauf gekommen, dass der Fehler dran liegt, dass wenn man dort 0 reinschreiben will ist das ein leerer String und deshalb ist das Feld leer.

Wenn man schreibt ='0' oder ="0" dann gehts.

Danke trotzdem!
 
Bin gerade drauf gekommen, dass der Fehler dran liegt, dass wenn man dort 0 reinschreiben will ist das ein leerer String und deshalb ist das Feld leer.

0 ist keinesfalls ein leerer String.
Aber die PHP-Funktion is_empty springt auch bei ner 0 an, ich vermute mal, dass ihr die verwendet.
 

*Optimier-Mode on*

Besser ist es, null, true oder false generell klein zu schreiben, denn dann spart sich PHP die Suche nach einer gleichnamigen Konstante, soweit ich weiß ;)

*Optimier-Mode off*

Sollen Integer-Werte überprüft werden, empfiehlt sich eine Kombination aus isset() und is_numeric() bzw. is_int().

Greetz

paddya
 
*Optimier-Mode on*

Besser ist es, null, true oder false generell klein zu schreiben, denn dann spart sich PHP die Suche nach einer gleichnamigen Konstante, soweit ich weiß ;)

*Optimier-Mode off*

Danke, weis ich auch. Aber ich war zu faul das ganze noch mit BBCodes zu machen. ;)
' sind auch schneller wie ".
Ich hatte mal irgendwo eine Seite wo diese ganzen Benchmarks zu finden waren. Hat die noch einer rumfliegen?