Vielen Danke schonmal.
Ich habe mir überlegt, dass ich die Spalte für den Tag je nach Anzahl der Überschneidungen einfach breiter mache.
Also zuerst überprüfe, wieviele maximale Überschneidungen es an diesem Tag gibt dann einfach mehr <td> anzeige.
Wenn bei einem anderen Termin keine Überschneidungen sind, mach ich einfach eine Colspan mit der Anzahl der Überschneidungen.
Das sollte meinen Aufbau nicht ganz so sehr über den Haufen werfen.
...
Musst du wissen. Finde ich aber sehr suboptimal.
Ich finde, das macht das Ganze sehr unübersichtlich, wenn die Tage eine unterschiedliche Breite haben. Man muss also schon genau hinschauen, welcher Termin zu welchem Tag gehört, wenn z.B. der Montag plötzlich die selbe Breite hat, wie der Dienstag und Mittwoch zusammen. Oder wenn ich mir schon einige Terminpläne meiner Arbeitskollegen anschaue, dann gäbe es oft der Fall, dass ein Tag mal den Platz einer gesamten Woche benötigt.
Zitat von Raildex
Man kann den "Zoom"-Faktor einstellen. Möchte man einen Auftrag anlegen, Wir die Zeit aus der Tabelle übernommen und man gibt einen Zeitraum in 10-Minuten Intervallen an.
...
Bringt dir ja trotzdem nichts.
Wie willst du ein Termin korrekt anzeigen lassen, der z.B. um 08:25 Uhr anfängt?
Auch wenn man rein- oder rauszoomen kann, muss ja dennoch der Termin korrekt in der Spalte angezeigt werden.
Es kann ja nicht sein, dass der Termin um 08:00 oder 8:30 Uhr anfängt, wenn die Einteilung halb-stündlich ist, und dann plötzlich um 08:00 oder 09:00 Uhr anfängt, wenn die Einteilung stündlich ist.
Darum sage ich ja, dass du mit einer festen Einteilung (auch mit Zoom-Funktion ist die Einteilung fest) nicht weit kommen wirst, du musst schon was haben, um die Termine in deiner Zeitleiste variabel verschieben zu können.
Kapsel deinen Code weiter in Funktionen. Hab keine Scheu kleine Funktionen zu schreiben.
Für start und end kannst auch gleich DateTime Objekte erstellen. Dann sparst du dir das ganze rumkonvertiere.
Außerdem ist das Ergebnis von 0 doch richtig mit deinen Testdaten und es fehlt ein return in deiner Funktion.
Drei Fehler:
1. Erst mal hast du bei deiner if-Abfrage bei $task2->start vergessen den Formatstring mitzugeben.
2. Der Formatstring für die Uhrzeit muss H:i:s lauten.
Korrigierst du diese beiden Fehler, dann wirst du auch ein Ergebnis bekommen, welches aber noch falsch ist, denn:
3. Du testest die IDs nicht auf Gleichheit. Das sorgt dafür, dass er eine Task mit sich selbst überprüft.
Edit:
Ich würde den Code aber auch so in etwas aufteilen:
Meine php Kenntnisse sind aber auch sehr eingerostet. Vermutlich geht der Code noch hübscher. Ich hab schon seit etlichen Jahren nichts mit mit php am Hut gehabt.