PHP-Kalender mit Zeitraum

deste

Mitglied
Hallo zusammen,

Ich benötige einen Denkanstoss zu meinem Problem und hoffe ihr könnt mir helfen. Google konnte es nicht ;-)

Ich habe eine DB mit verschiedenen Geräte wie Telefone und Steroanlagen.

Nun möchte ich einen Kalender in dem ich z.B. zu einem Event verschiedene Geräte hinzufüge und diese dann blocke.
Das Problem (für mich) ist es, das ein Event auch mal 2 Wochen gehen kann.
Wie schaffe ich es, das ich einem bzw mehreren Gerät ein 2 wöchiges Event hinzufüge und das dann mir anzeigen lassen kann.

Das Gerät muss dann für den Zeitraum blockiert sein.
Könnt ihr mir dabei helfen?

Vielen Dank schon mal im voraus!
 
Erstelle einfach eine Spalte "blocked", in der entweder eine 0 steht (für nicht geblockt) oder der timestamp, bis wann du das Gerät blockieren möchtest.
 
Ja, das mit dem "ausgegebenen" Gerät das ich dann dort einen 0 setze habe ich mir auch überlegt. Wie meinst du das mit dem timestamp bis wann? Angenommen das erste Event findet am 01.09.12 - 09.09.12 statt. Nun muss ja in meinem Kalender einmal ein "Dauertermin" angezeigt werden und das Gerät darf ich nicht mehr für das zweite Event z.B. am 04.09.12 verwendet werden. Aber wie berechne ich die Tage zwischen dem ersten Event?
 
Achso.
Erstelle eine extra Tabelle mit folgenden Feldern:
termin_id geraet_id, start, ende
termin_id ist der primary_key mit auto_increment.
Der Rest sollte eigentlich selbsterklärend sein.
In diese Tabelle trägst du sämtliche Blocktermine ein und kannst über die Geräte ID prüfen ob eine Blockierung vorhanden ist.
 
Hallo,
entschuldige die späte Antwort. Hatte Probleme mit dem Internet.
Also das habe ich mir auch gedfacht, aber leider komme ich doch nicht weiter.
Ich habe die Tabelle wie oben beschrieben.
Ich habe 3 Geräte: Ger1, Ger2 und einen Termin: TerminA vom 01.09.2012 (start) 06.09.12(ende).
Dem TerminA gebe ich folgende Geräte: GerA und B.
Nun würde ich gerne TerminB anlegen 03.09.2012(start) 12.09.12(ende). Und dem GerA zuweisen. Aber da dieses Gerät ja leider nicht "frei"ist sondern bei TerminA gebunden ist müsst ich es also rausfiltern können.
Und wenn ich nun TerminC anlegen wollte 01.10.12(start) bis 10.10.12(ende) und dort GerB zuweisen möchte muss dies ja gehen.
Ich hoffe du / ihr versteht wie ich es meine?! Ich kann doch nicht jeden Tag zw. 01.09 - 06.09 in die Datenbank schreiben. Da es ja sein kann, das auch mal ein Event 3 Wochen geht. Es wären ja dann 21 Einträge. Es muss doch noch anders zu lösen sein, oder?

Ich komme einfach nicht auf den Ansatz.
Vielen Dank schon einmal für deine Hilfe
 
Brauchst ja auch nicht für jeden Tag einen Eintrag in die Datenbank machen.
Du hast ja den Timestamp für den Start und das Ende.
Da ist dann nur eine Abfrage des Starttermins des TerminB notwendig, wobei abgefragt wird, ob Start TerminB größer als Start TerminA und ob Start TerminB kleiner ist Ende TerminA ist.
Wenn diese Abfrage Positiv ausfällt kann das Gerät nicht Gebucht werden
 
Vielen Dank, für deine schnelle Antwort. Nur ist nun die Frage wie dann die Tabelle Event/Termin bei TerminA aussehen soll. Den dort sind ja 2 Geräte eingetragen.

Weil wenn ich das nun aus den Beiträgen heraus gelesen habe würde es ja dann so aussehen:
termin_id ; geraete_id ; start ; ende
1;1;1346611935 ; 1346611957
2;2;1346611935 ; 1346611957

aber eigentlich müsste es ja dann so aussehen( weil ja zu einem Termin 2 Geräte hinzugebucht sind)
termin_id ; geraete_id ; start ; ende
1;1;1346611935 ; 1346611957
1;2;1346611935 ; 1346611957

Oder?
Dann müsst ich noch eine ID einfügen die AI besitzt damit jedes Event eine eigene ID bekommt, oder?
Gibt es keine elegantere Methode dies zu verwirklichen? Ich habe mehr wie 90 Geräte und wenn nur die hälfte mal zu einem Termin gebraucht werden, wären es ja mind. 45 Einträge.

Mit freundlichen Grüßen
 
Zuletzt bearbeitet:
termin_id ; geraete_id ; start ; ende
1;1;1346611935 ; 1346611957
1;2;1346611935 ; 1346611957

So müsste es aussehen.
Wenn du nicht für jedes Gerät bei jedem Event einen Extra Eintrag in der Datenbank haben möchtest, musst du in die Spalte geraete_id mehrere IDs hinterlegen und diese durch einen Separator von einander trennen.

Das zieht allerdings einen Kompliziertere Abfrage nach sich, da die geraete_id jedes mal auseinander gepuzzelt werden um gezielt nach einen Gerät zu fragen.

Daher wäre dann vielleicht eher die Frage, warum nicht die Aktiven Events in 1 Tabelle wo alle Geräte einzeln gelistet werden und die inaktiven in eine Art Archiv verlegen und dort dann die geräte_ids zusammenfassen.
 
termin_id ; geraete_id ; start ; ende
Daher wäre dann vielleicht eher die Frage, warum nicht die Aktiven Events in 1 Tabelle wo alle Geräte einzeln gelistet werden und die inaktiven in eine Art Archiv verlegen und dort dann die geräte_ids zusammenfassen.

Also du meinst ich mache 2 Tabellen:
1Tabelle: Termine_aktiv ; id,termin_id ; geraete_id ; start ; ende
2Tabelle: termine_nichtaktiv: id,termin_id ; geraete_id ; start ; ende

Aber wie meinst du das, mit der Verlegung der Termine. Was wäre den aktiv und was wäre nicht aktiv? Den alle Termine in der Zukunft sind ja "aktiv".

Kannst du mir bitte ein Bsp. der Tabelle nennen / schreiben wie du es meintest?
Wenn wir 2 Geräte und 2 Termine haben.

Mit freundlichen Grüßen
 
Mit Verlegung meine ich ein Skript was die Einträge der beendeten Events aus der Tabelle mit den Aktiven Terminen (Termine, die in der Zukunft statt finden oder die momentan gerade laufen) löscht und diese Einträge in die Tabelle mit den nicht aktiven Terminen schreibt.

Beziehungsweise, wenn du sagst die Termine die Abgelaufen sind braucht eh keiner mehr. Kannst du die Termine zusammen mit der Reservierung der Geräte löschen.
 

Neue Beiträge

Zurück