Vrij gecompliceerd uit te leggen dit. Toch proberen.
Ik ben bezig om een agenda te maken voor een reserveer applicatie.
Ik laat de agenda per maand zien:
*klik*
(Ik heb voor dit topic even de timestamps laten zien bij de dagen.)
De kalendermaand laten zien is geen enkel probleem.
Echter; er kunnen opties in de agenda worden gezet (deze staan in een apparte tabel met de volgende velden: id, persoonID, omschrijving, begin, eind. Waarbij 'begin' en 'eind' timestamp velden zijn (INT, 10).).
Een optie is niets anders dan een afsprak, met een begin en een eind datum.
Dan lijkt het in eerste instantie vrij simpel om de opties van deze maand te selecteren:
Echter dit gaat niet op, want:
Hij moet ook de opties selecteren die bijvoorbeeld in februari beginnen en ergens in maart eindigen, en andersom: opties die in maart beginnen en ergens in april eindigen. Iets wat niet gebeurd met bovenstaande query.
Dus ik logisch nadenken:
"als:
of de eindtijd groter is de eerste dag EN de eindtijd is kleiner dan de laatste dag
of
de begintijd is groter dan de eerste dag EN de begintijd is kleiner dan de laaste dag"
dan heb ik alle opties die (gedeeltelijk) in de maand maart vallen.
Echter bedenk ik me tijdens het typen dat dit niet opgaat voor opties die beginnen in februari en eindigen in april!
Al met al; zou iemand mij op weg kunnen helpen al dan niet pseudo? Ik mis even de logica die er ongetwijfeld voor te vinden is.
Wat ik al had; maar iets wat niet (wel gedeeltelijk geloof ik) lijkt te werken:
Nogmaals; ik mis het even.
Ik ben bezig om een agenda te maken voor een reserveer applicatie.
Ik laat de agenda per maand zien:
*klik*
(Ik heb voor dit topic even de timestamps laten zien bij de dagen.)
De kalendermaand laten zien is geen enkel probleem.
Echter; er kunnen opties in de agenda worden gezet (deze staan in een apparte tabel met de volgende velden: id, persoonID, omschrijving, begin, eind. Waarbij 'begin' en 'eind' timestamp velden zijn (INT, 10).).
Een optie is niets anders dan een afsprak, met een begin en een eind datum.
Dan lijkt het in eerste instantie vrij simpel om de opties van deze maand te selecteren:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| // year = 2004, month = 3 & month_end = 31 in dit geval... $sql =" SELECT id, omschrijving, begin, eind FROM tb_options WHERE persoonID = '" . $_SESSION['persoon'] . "' AND begin >= " . mktime('', '', '', $month, 1, $year) . " AND eind <= " . mktime('', '', '', $month, $month_end, $year) . " ORDER BY begin ASC "; |
Echter dit gaat niet op, want:
Hij moet ook de opties selecteren die bijvoorbeeld in februari beginnen en ergens in maart eindigen, en andersom: opties die in maart beginnen en ergens in april eindigen. Iets wat niet gebeurd met bovenstaande query.
Dus ik logisch nadenken:
"als:
of de eindtijd groter is de eerste dag EN de eindtijd is kleiner dan de laatste dag
of
de begintijd is groter dan de eerste dag EN de begintijd is kleiner dan de laaste dag"
dan heb ik alle opties die (gedeeltelijk) in de maand maart vallen.
Echter bedenk ik me tijdens het typen dat dit niet opgaat voor opties die beginnen in februari en eindigen in april!
Al met al; zou iemand mij op weg kunnen helpen al dan niet pseudo? Ik mis even de logica die er ongetwijfeld voor te vinden is.
Wat ik al had; maar iets wat niet (wel gedeeltelijk geloof ik) lijkt te werken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| $sql =" SELECT id, omschrijving, begin, eind FROM tb_options WHERE persoonID = '" . $_SESSION['persoon'] . "' AND ( ( eind >= " . mktime('', '', '', $month, 1, $year) . " AND eind <= " . mktime('', '', '', $month, $month_end, $year) . " ) OR ( begin >= " . mktime('', '', '', $month, 1, $year) . " AND begin <= " . mktime('', '', '', $month, $month_end, $year) . " ) ) ORDER BY begin ASC "; |
Nogmaals; ik mis het even.
[ Voor 18% gewijzigd door Verwijderd op 23-03-2004 21:15 ]