Dauerauftrag
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
auftrag
aussehen
dank
datenbank
datum
dienstag
donnerstag
freitag
idee
kunde
mittwoch
monat
montag
problem
sache
sagen
sparen
tag
woche
wochentag
-
Hallo,
ich muss für einen Kunden ein Verwaltungsprogramm schreiben, in dem man die Aufträge der Stadt verwaltet (Rasenmähen...^^)
nun: ich nähere mich meinem Ende des Projekt. Doch eine schwierige aufgabe liegt noch vor mir: er möchte, dass es möglich ist Daueraufträge zu haben. Leichter gesagt als getan. Es soll die möglichkeit geben: Täglich, Wöchentlich, 2 Wöchentlich, Monatlich seine Aufträge zu plazieren. Natürlich dürfen Samstags und Sonntags KEINE Aufträge plaziert werden.
Leider fällt mir dazu keine bessere Lösung ein als diese hier:
Datenbank:
AuftragsID
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Tag1
Tag2
bei täglich würde die Datenbank aktiviert mit
Montag 1, Dienstag 1, Mittwoch 1, Donnerstag 1, Freitag 1, Tag1 0, Tag2 0
bei wöchentlich würde man dann z.B. sagen
Montag 0, Dienstag 0, Mittwoch 1, Donnerstag 0, Freitag 0, Tag1 0, Tag2 0
bei 2 Wöchentlich müsste man dann sagen
Montag 0, Dienstag 0, Mittwoch 0, Donnerstag 0, Freitag 0, Tag1 12, Tag2 27
bei Monatlich
Montag 0, Dienstag 0, Mittwoch 0, Donnerstag 0, Freitag 0, Tag1 12, Tag2 0
Danach müsste ich z.B. für Montag den 12.12.2008 abfragen:
ist irgendwo Montag auf 1?
stimmt irgendwo der Tag1 oder der Tag2 überein?
gibt es ein Datum, dass am Samstag oder am Sonntag war und deshalb auf den Tag verschonben werden muss?
Das ist eine RIESEN Arbeit. Gibt es vielleicht irgendeine möglichkeit, wie ich das kürzen könnte?
Es hat doch bestimmt schon einer von euch sowas ähnliches gemacht oder?
danke im Vorraus für eure Ideen. Denn das wird ja ewig dauern.. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
ich würde das so machen:
Deine Tabelle sollte wie folgt aussehen:
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Datum
Und dann trägst du in der Spalte das Anfangsdatum ein. Bei den Wochentagen legst du dir dann eine Kodierung fest. z.B.:
0 = Nur der Tag
1 = Wöchentlich
2 = Alle 2 Wochen
3 = Monatlich
Das würde dann so aussehen:
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Datum
1___________1_______1_______2______3______09.09.2009
Dann würde ab dem 09.09.2009 einmal am Montag, Dienstag & Mittwoch etwas getan werden, jede woche am Donnerstag & einmal im Monat am Freitag.
Ich weiß nicht ob das so alles gut durchdacht ist, aber das wäre zumindest mein Lösungsansatz.
Gruß
DCBlaze
Beitrag geändert: 9.10.2008 13:09:20 von dcblaze
Beitrag geändert: 9.10.2008 13:10:03 von dcblaze -
Du könntest für die Wochentage mit einem Flag machen. Und setzt dann MONTAG (=1) ...
-
Ich kenne mich mit sowas überhaupt nicht aus - aber interessehalber:
Was passiert mei dieser Lösung mit den Feiertagen? -
@dcblaze:
danke für deinen Tipp. Das Problem ist bei deiner sache 1: ich weiß nicht, welcher auftrag wöchtentlich, welcher alle 2 wochen... gemacht werden soll.
@xi-blog:
keine ahnung, ob ich deine Sache jetzt richtig verstanden habe: MONTAG - FREITAG sind sowieso bool werte. Oder was meinst du?
@bewahrer:
das ist auch so ein Problem. Ich werde es am anfang so einrichten müssen, dass der Kunde sie selber verschiebt. (muss er ja immer können. Manchmal ist es ja z.B. wegen Arbeitermangel garnicht möglich einen Auftrag auszuführen)
dcblaze hat mich aber auf eine Idee gebracht denke ich. Man könnte ein zwischenteil machen:
Datenbank:
AuftragsID
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
0 = Nur der Tag
1 = Wöchentlich
2 = Alle 2 Wochen gerade
3 = Alle 2 Wochen ungerade
4 = Monatlich gerade 1
5 = Monatlich gerade 2
6 = Monatlich ungerade 1
7 = Monatlich ungerade 2
bei täglich würde die Datenbank aktiviert mit
AuftragsID Montag Dienstag Mittwoch Donnerstag Freitag
87_________0______0__________7________0___________0______
das würde vielleicht ein bisschen zeit beim Programmieren sparen. Ist aber immernoch vorallem beim Monat aufwändig (wahrscheinlich sogar aufwändiger als einfach den Tag hinten hinzuschreiben... -
@xi-blog:
keine ahnung, ob ich deine Sache jetzt richtig verstanden habe: MONTAG - FREITAG sind sowieso bool werte. Oder was meinst du?
siehe http://de.wikipedia.org/wiki/Flag_(Informatik)
D.h. du hast nur eine Zahl, in der alle Bool-Werte für MONTAG-FREITAG gespeichert sind.
Das funktioniert auf binärer Basis (0=false; 1=true):
Montag = 1 (2^0)
Dienstag = 2 (2^1)
Mittwoch = 4 (2^2)
Woche = Montag&Dienstag = 1+2 = 3 (=11) -
aah, interessant.
Würde zwar etwas speicherplatz sparen wäre aber auch viel übersichtlicher oder?
(und ist leider nicht auf 2 wöchentlich und monatlich anwendbar...)
ansonsten coole sache... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage