chronologisch paralel
Deus Figendi
- php
Eine Entschuldigung vorab, mir ist kein besserer Titel eingefallen und leider bin ich mir auch mit der Kategorie nicht sicher (hätte es auch unter Design, XHTML oder CSS einstellen können).
Nun zum Problem:
Ich habe eine Datenbank, die Tagebucheinträge enthält. Jeder dieser Einträge trägt ein Datum und eine Zeitspanne, für die der Eintrag gilt. Also wenn jemand einen Eintrag schreibt, dann schreibt er ja ggf. über die letzten drei Tage oder die letzte Woche oder eben nur von dem einen Tag. Angenommen ich schriebe heute (13.06.2007) einen Beitrag über diese Woche, dann trüge er das Datum 11.06.2007 (letzten Montag) und die Zeitspanne von 3 Tagen.
Soweit so gut.
Des Weiteren gibt es aber mehrere Tagebuch-Schreiber, die in die selbe Datenbank schreiben und auch auf der selben Seite ausgegeben werden sollen.
Was mich zu meinem Problem führt: Am Liebsten wäre es mir, wenn die Beiträge anti-chonoligisch aufgeführt würden (also neustes oben) und Beiträge, die den selben Zeitraum betreffen auch nebeneinander stünden. Scheinbar also eine tabellarische Aufgabe, allerdings ergeben sich zwei Hürden:
1. ein Beitrag könnte nur einen Teil eines anderen abdenken, wenn ich also einen Betrag über die bisher vergangene Woche schreibe und jemand anderes einen über Dienstag (12.06.2007), dann sollte der idealerweise vertikal mittig neben meinem Beitrag auftauchen. Schreibt er einen Beitrag über die letzten zwei Wochen (inkl. dieser), dann möge sein Beitrag oben mit meinem bündig ab schließen und ebenfalls neben meinem erscheinen.
2. ich kann nicht wirklich vorhersehen, wie viele Beiträge nebeneinander stehen könnten, ich kann zwar abschätzen, dass es wohl nicht mehr als 5 werden, aber so wirklich sicher kann ich mir da auch nicht sein :-)
Und nun erhoffe ich mir Lösungsvorschläge, irgendwelche Ideen, wie man sowas programmieren könnte. Von Hand erscheint mit das recht einfach, aber automatisiert...
Schönen Dank im Voraus
Deus Figendi
So schwer solle das eigentlich nicht sein. Arbeite mit relativer Positionierung. Definiere dabei zum Beispiel einen Tag als 20 Pixel hoch.
Anschließend liest du die Einträge aus der Datenbank aus und ordnest sie nach dem frühesten Gültigkeitsdatum. Gleichzeitig liest du in deinem Query bereits die Länge eines Eintrages aus (von_Datum - bis_Datum + 1) wodurch du gleichzeitig deine Höheninformation bekommst.
Wenn dein Eintrag zum Beispiel von 15.6 bis zum 10.6 gültig ist brauchst du die Information 15.6 und 6 Tage Gültigkeit. Du erstellst also eine Box, (15.6 ist dein frühestest Datum) die mit den Styleeigenschaften margin-top:0 und height: 120px ausgestattet wird. (5 Tage * 20 Pixel pro Tag). Wenn du die Kästen nun richtig floaten lässt, dürfte sich eine Box mit entsprechend hohem Rand für deine Zwecke selbst positionieren.
Ich hoffe mein Ansatz ist verständlich. Wenn du damit nicht weiterkommst, dann sieh dir die Kalenderfunktionen in zum Beispiel GroupWare-Systemen an. Die Funktionieren ähnlich.
Grüße.
hi,
Angenommen ich schriebe heute (13.06.2007) einen Beitrag über diese Woche, dann trüge er das Datum 11.06.2007 (letzten Montag) und die Zeitspanne von 3 Tagen.
Wann wurde denn die Drei-Tage-Woche eingeführt?
gruß,
wahsaga
Wann wurde denn die Drei-Tage-Woche eingeführt?
Weiter unten im Post hatte ich klarifiziert, dass ich die "bisher vergangene Woche" meine.
(...)wenn ich also einen Betrag über die bisher vergangene Woche schreibe und(...)