Hallo Barksalot,
Aufruf erzeuge_kalenderwochen($mysqli, $firstOfMonth, $teile25)
Definition function erzeuge_kalenderwochen($firstOfMonth, $mysqli, $teile25)
Das kann nicht funktionieren. Argumente (das, was beim Aufruf in Klammern steht) werden den Parametern (das, was in der FUNCTION-Zeile in Klammern steht) nicht per Name zugeordet, sondern nach der Position. Die Funktion möchte in $firstOfMonth den Unix-Timestamp des Monatsersten sehen, für den ein Kalender erzeugt werden soll (eine ziemlich große Zahl). Wenn Du $mysqli nach vorn ziehst, landet dieses Objekt in $firstOfMonth. Damit fängt die date-Funktion nichts an und sie mault genau deswegen 'rum: date() expects parameter 2 to be integer, object given
Ich hatte diese Parameteranordnung GANZ BEWUSST gewählt. Aus meiner Sicht ist dieser prozedurale Code nur ein erster Schritt, irgendwann sollte das in einer Klasse verpackt werden. Und wenn es in einer Klasse ist, brauchst Du $mysqli und $teile25 nicht mehr als Parameter. Sowas wären dann private Eigenschaften der Klasse. D.h. die Parameter, die potenziell entfallen, habe ich ans Ende gesetzt.
Ich habe das dummerweise nicht konsequent durchgehalten, kalender_termine und count_alle_kalender_termine passen nicht dazu.
Wenn Du das nicht magst, kannst Du es gerne ändern, es muss dann nur zwischen Aufruf und Funktionsdeklaration konsistent sein.
Das zentrale Problem ist jetzt, dass aus kalender_termine nichts herauszukommen scheint. Da sind einige Merkwürdigkeiten. Deine Aussagen legen nahe, dass dieser Code
$datumTermine = kalender_termine($mysqli, $date, $teile25, 3);
$anzTermineGesamt = count_alle_kalender_termine($mysqli, $date, $teile25);
var_dump($datumTermine);
zu dieser Ausgabe führt:
Notice: Undefined variable: datumTermine
Wie Regina schon sagte: Das geht nicht.
Entweder geht kalender_termine kaputt, und dann gibt's einen fatal error mit Script-Abbruch, oder es geht nicht kaputt, dann kommt ein Wert zurück und $datumTermine ist nicht undefiniert.
Es spukt also in deinem Source-Code, und den versuchen wir jetzt zu exorzieren.
Bitte lösche an den Stellen, wo $datumTermine steht, alle Leerstellen zwischen $datumTermine und dem nächsten nichtleeren Zeichen. Danach kannst Du sie nach Geschmack neu einfügen. Warum? Es gibt Leerzeichenvarianten, die von PHP nicht als Leerzeichen erkannt werden, z.B. das NO-BREAK SPACE, das manche Editoren bei Shift+Space oder Ctrl+Space erzeugen. Das würde die undefinierte Variable erklären; und foreach gibt bei einer undefinierten Variablen genau deine Fehlermeldung aus. Das Forum ersetzt NBSP durch ein normales Space, deswegen kann ich das von hier aus nicht kontrollieren, was bei Dir ist.
Wie kann das entstehen? Es gibt Editoren, die bei Shift+Space ein NBSP erzeugen. Welchen verwendest Du?
Wenn's das nicht war, tjaaaa. Dann wird es rätselhaft.
Rolf
sumpsi - posui - clusi