Vor genau so einem Problem stand ich auch mal. Im Endeffekt haben wir die Daten schlichtweg als Text (varchar) gespeichert. Klar, keine supertolle oder innovative Lösung, aber mal ehrlich: Was außer auslesen möchtest du damit machen?![]()
Hallo zusammen,
ich möchte eine Öffnungszeitenabfrage erstellen. Die Öffnungszeiten sollen individuell eingetragen werden können.
Wie lege ich da am besten eine Datenbanktabelle an?
Möglichkeiten einer Pause soll auch gegeben sein.
zB.
Unternehmen 1 Öffnungszeiten:
Mo. 10.00 Uhr - 13.00 Uhr 15.00 Uhr - 18:30 Uhr
Di. 10.30 Uhr - 14.00 Uhr 15.00 Uhr - 18:30 Uhr
Mi. 14.00 Uhr - 18:00 Uhr
Do. 10.00 Uhr - 13.00 Uhr 15.00 Uhr - 18:30 Uhr
Fr. Ruhetag
Sa. 10.00 Uhr - 13.00 Uhr
So. Geschlossen
Wie speicher ich so etwas am besten ab?
Grüße
der Denis
Vor genau so einem Problem stand ich auch mal. Im Endeffekt haben wir die Daten schlichtweg als Text (varchar) gespeichert. Klar, keine supertolle oder innovative Lösung, aber mal ehrlich: Was außer auslesen möchtest du damit machen?![]()
Ich möchte eine Grafik einblenden "YES WE ARE OPEN" oder "SORRY WE ARE CLOSED"
Dazu muss ich einen abgleich mit der Serverzeit machen ;-)
Warum nicht so:
[CompanyID][Day][Name][Start][End]
Bei Tag schreibst du die Zahlen rein: 0=Sonntag, 1=Montag...
Bei Name schreibst du entweder open für Öffnungszeit, oder "Ruhetag" oder "Geschlossen" rein.
_________-- - adicto otra vez - --
(¯`·.¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸.·`¯)
Unterwasserrugby - der dreidimensionale Sport
Das ist soweit ok, nur wie arbeite ich eine Pause ein? Ginge das ggf. mit BETWEEN Zeitraum1 OR Zeitraum2???
So ich habe mal etwas gebastelt:
Tabelle:
openingID
companyID
weekDay
open1
close1
open2 (NULL)
close2 (NULL)
Hier die Abfrage:
SELECT opening.openingID
FROM opening
WHERE CURTIME() BETWEEN opening.open1 AND opening.close1 AND opening.weekDay = DAYNAME(NOW()) OR CURTIME() BETWEEN opening.open2 AND opening.close2 AND opening.weekDay = DAYNAME(NOW())
Geändert von DenisCGN (06.12.2008 um 12:13 Uhr)
morgen
ok ich weiss ich werd mich jetzt sicher unbeliebt machen aber was solls
da die daten keineswegs komplex sind und auch nicht übermässig viel denk ich wäre es einfach die statisch in variablen abzulegen .. anstatt in der Datanbank ( wo die kommunikation zwischen php und mysql ja wieder zeit kostet )
ansonsten müsste das so gehen wie du dir das vorstellst.
ob das mit dem BETWEEN geht hab ich noch nie getestet was aber gehen sollte ist
SELECT opening.openingID
FROM opening
WHERE ((CURTIME() > opening.open1 AND CURTIME() < opening.close1) OR
(CURTIME() > opening.open2 AND CURTIME() < opening.close2)) AND opening.weekDay = DAYNAME(NOW())
Die Pause brauchst du nicht einzuarbeiten. Die ergibts sich durch die Öffnungszeiten.
_________-- - adicto otra vez - --
(¯`·.¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸.·`¯)
Unterwasserrugby - der dreidimensionale Sport
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)