Hej Christian, og tak for dit indlæg!
Jeg prøver at præcisere mig lidt - jeg har lavet et kalenderview der er baseret på en uge... dvs. den går fra mandag til søndag horisontalt, og vertikalt starter dagene fra eks. kl 8 - kl 20.
Når calenderen genereres har jeg lavet følgende funktion:
function getOpenHours($x = 0) {
$date1 = date('n-j-Y',$x);
$date1 = split('-',$date1);
$date = mktime(0,0,0,$date1[0],$date1[1],$date1[2]);
$date2 = date('Y-m-d',$x);
$query = parent::query("SELECT dato, open, close FROM min_tabel WHERE dato='$date2'");
while($res = mysqli_fetch_object($query)) {
$dOpen = strtotime($res->dato . ' ' . $res->open);
$dClose = strtotime($res->dato . ' ' . $res->close);
}
if($x >= $dOpen && $x <= $dClose) {
$r = true;
} else {
$r = false;
}
return $r;
}
dvs. for hver celle får jeg et timestamp ind ($x) i denne funktion der så tester om der skal være åbent eller lukket.
Nu til udfordringen:
jeg tager en klinik med to healere som eksempel. Disse har hver deres kalender, hvor de skal taste deres arbejdstider. Disse kan være forskellige fra uge til uge.. det kunne være en slags arbejdstider i de lige uger og andre i ulige... eller det kunne være arbejde hver 1.søndag i måneden - måske kunne det være 10 uger med én slags arbejdstid, og så 8 uger med noget andet...
Spørgsmålet er så, hvordan bygger jeg det databasearkitektorisk mest korrekt op, således jeg ikke hæmmer performance og jeg stadig holder BCNF... ? :-)
jeg har ikke kodet noget i databasen andet end lidt test, hvor jeg har en dato (date), en open(time) og en close (time). jeg tror egentlig det er fint nok, spørgsmålet er bare hvordan jeg håndterer det med "arbejdsplaner" hvor de skal gentages... Altså, skal der, når man planlægger laves én linje for alle arbejdstider - dvs. 365 om året, eller hvordan skal det gribes an?
håber det gav et bedre indblik i hvad jeg mener :-)