PHP-Kalender mit Zeitraum

Okay, das wäre ja das geringste Problem. Aber angenommen ich habe nun noch 10 Termine in der Zukunft die alle mind. 20 Geräte haben. Wie sieht dann die DB aus, das es nicht unnötig viele Einträge sind?
 
da hättest du noch mindestens 200 Einträge in der Tabelle mit den Aktiven Terminen.

Wie gesagt andere Möglichkeit wäre in die Spalte mit den Geräte IDs mehrere IDs hinterlegen und diese mittels Separator (ein Komma, Semikolon usw.) trennen.

Die IDs kann man dann mit der PHP Funktion Explode trennen. Wäre dann die Möglichkeit mit dem größeren Aufwand.
 
Abend zusammen,
leider stoße ich wieder mal auf weitere Probleme.
Also ich hab es folgendermaßen aufgebaut.
DB_Eventtime
id, start, ende
1,01.10.12,09.10.12
2,05.10.12,10.10.12
3,01.10.12,14.10.12
4,05.10.12,12.10.12
5,05.10.12,14.10.12
DB_EventGer
id,eid(Eventtimeid),gid(Geräteid)
1,1,1
2,1,2
3,2,1
4,3,5
5,4,4
6,5,1
(Diese Einträge sind nur als Beispiel anzusehen)
DB_Geräte
id,name
1,Ger1
2,Ger2
3,Ger3
4,Ger4
5,Ger5

---- So das war es an Tabellen
Nun zu meiner Überlegung / Abfrage(n).
Ich zähle wie viele Einträge in der DB_Eventtime sich befinden. ( Dort sind nur die aktiven bzw. die Einträge in der Zukunft)

Das Ergebnis ist 5.
Also führe ich eine Schleife aus wobei bis 5 gezählt wird um jeden EIntrag zu prüfen.
Nun möchte ich prüfen ob der neue Termin (04.10.12 starttime und 13.10.12 endtime) mit einem eingetragen Termin kollidiert bzw. auslesen kann welche Geräte gebunden sind.

Also mach ich die Abfrage:
04.10.12 >= 01.10.12 und 13.10.12 <= 09.10.12 ---> Ergebnis ist Negativ ( I. Schleife)
Aber genau hier ist doch der Fehler.. den dort ist trotzdem ein Termin bzw. sind Geräte gebucht.
Wie kann ich also für die oben angezeigten Tabellen eine richtige Abfrage generieren?!


MfG
 
Du musst eigentlich 2 Sachen prüfen:
1) Liegt die starttime zwischen der start- und endtime eines bestehenden Events
2) Liegt die endtime zwischen der start- und endtime eines bestehenden Events

Es könnte ja sein, dass sich die Events nur an einer Seite überschneiden:
Bestehendes Event: 4.10. bis 19.10.
Gewünschtes Event: 2.10. bis 12.10.
Du siehst, 2.10. würde gehen, aber nur bis zum 4.10. Daher beide Seiten einzeln prüfen.

Gruß
 
Zurück