dedlfix: Fatal error: Uncaught Error: Call to a member function add()

Beitrag lesen

Tach!

if ( $uss_inhalt != "---") {
		$start = DateTime::createFromFormat('H:i', "00:00");
} else {
		$start = DateTime::createFromFormat('H:i', $uss_inhalt);
}

Und schon funktioniert es wieder. Man, und ich sitze zwei Tage an dem Scheiß 😕 @Rolf B hätte jetzt bestimmt gesagt, lass dir Fehler ausgeben. Aber wo hätte ich angesetzt?

Es gibt möglicherweise keine Fehlermeldung. Mehr als error_reporting auf E_ALL zu stellen und display_errors auf on, kannst du nicht machen. Letzteres ist aber schon der Fall, denn du hast ja die Meldung des fatalen Fehlers zu sehen bekommen.

Aber selbst wenn du noch nie auf einen derartigen Folgefehler gestoßen bist, könntest du mit var_dump() anschauen, was denn in $start drinsteht, bevor es in die Zeile mit dem Fehler geht. Da sollte ein false zu sehen sein. Das Handbuch verrät, dass DateTime::createFromFormat() ein false liefern kann, wenn es nicht erfolgreich ist. Was wären wohl Ursachen, um nicht erfolgreich zu sein? Werte, die es nicht verarbeiten kann. Also schaut man sich mal die Werte an, die man da übergibt. Damit sollte dann zu sehen sein, dass es damit natürlich nicht geht. Und nun geht man rückwärts weiter, bis man die Quelle der fehlerhaften Daten gefunden hat. Das wäre beschwerliches aber systematisches Vorgehen und meist zielführender als lediglich Überlegungen anzustellen.

Noch eine Frage, ist es möglich hier

!= "---"

nicht nur auf die --- zu prüfen sondern auf alles wo keine Zahlen drin steht? Falls mir so ein Fehler nochmals unterläuft bzw. noch andere Werte in der DB sind die nicht z.B. 07:00 haben. Ich muss auch mal schauen wie die --- da überhaupt rein kommen 😕

Du solltest nun langsam wissen, dass DateTime::createFromFormat() ein false zurückgibt, wenn ihm die Eingabe nicht schmeckt. Wenn du auf dieses false prüfst, kannst du alle Werte abfangen, die nicht verwertbar sin.

dedlfix.