Dabei seit: 30.09.2002 Ort: Dortmund Alter: 18 Geschlecht:
Verfasst Mi 20.07.2005 17:47 Titel
[sql] date, veranstaltungskalender
Kann mir mal einer n Denkanstoß geben. Ich bin irgendwie betriebsblind oder wie auch immer man es nennen will.
Folgendes, ich schreibe gerade nen Veranstaltungskalender.
Es besteht die Möglichkeit eintägige Veranstaltungen einzutragen, und mehrwöchige. Dann gibt es noch die Möglichkeit sich die Veranstaltungen für einen Monat anzeigen zu lassen. Wenn man den Aktuellen Monat auswählt, soll man allerdings nur die Veranstaltungen ab dem aktuellen Tag gezeigt bekommen.
Also Beispiel, Monat Juli wird gewählt:
Veranstaltung 1: 1-tägig, am 18.07.2005 - vorbei. wird nicht angezeigt
Veranstaltung 2: 1-tätig, am 22.07.2005 - ausstehend, wird angezeigt
Veranstaltung 3: Mehrwöchig, vom 05.06.2005 – 12.08.2005
Nun hab ich alles versucht, bekomme es aber einfach nicht hin. Entweder werden alle Veranstaltungen im Juli angezeigt, oder nur die ab dem aktuellen Datum, aber dafür die Mehrwöchigen nicht, oder es wird garnichts angezeigt *gg*
Die DB ist wiefolgt angelegt:
Name, Ort, etc... datum, datum_ende
Bei eintägigen Veranstaltungen wird als datum_ende 0000-00-00 eingetragen. (MySQL-Date)
Meine Query bisher:
Code:
$querystring = "SELECT * FROM `v_kalender` WHERE
(datum >= '".date("Y")."-$monat-".date("d")."' AND datum_ende <= '".date("Y")."-$monat-31' AND datum_ende != '0000-00-00') OR
(datum_ende >= '".date("Y")."-$monat-01' AND datum <= '".date("Y")."-$monat-31') OR
(datum LIKE '%-$monat-%' AND datum >= '".date("Y")."-$monat-".date("d")."')
AND aktiv = '1' ORDER BY datum ASC";
mag komisch aussehen, funktioniert aber schon soweit, das er alles korrekt anzeigt, AUSSER, wenn eine Veranstaltung mehrtägig ist, und vor dem aktuellen Datum endet. also z.b. vom 05.07.2005 - 07.07.2005.
alles andere wird korrekt angezeigt.
Jetzt brauch ich nur mal nen Denkanstoß wie ich das hinkrieg. noch n zusätzliches OR mit datum >= heute AND datum_ende >= heute. geht ja irgendwie nich, dann zeigter mir ja alle nachfolgenden monate gleich mit an.
man ey ich sitz da jetzt ne stunde dran und komm einfach nich drauf. einer ne idee?
ich weiß das der ganze code an sich vermutlich murks is, aber so isses nunmal
//edit:
ich checks einfach nich. so sieht die query aus:
Code:
SELECT * FROM `v_kalender` WHERE
(datum >= '2005-07-20' AND datum_ende <= '2005-07-31' AND datum_ende != '0000-00-00') OR
(datum_ende >= '2005-07-01' AND datum <= '2005-07-31' ) OR // wegen dieser zeile zeigter die VA vom 05.07 an.
(datum LIKE '%-07-%' AND datum >= '2005-07-20') AND aktiv = '1'
ORDER BY datum ASC
wie änder ich das jetzt so das das passt? wenn ich noch n AND datum >= xy mach dann zeigter mir ja wieder die nachfolgenden monat mit an. wenn ich irgendwas anderes irgendwie ändere zeigter mir die mehrwöchigen nich mehr an. ich glaub das is überhaupt nich mögilch was ich da vor hab, kann das sein?
Zuletzt bearbeitet von shakadi am Mi 20.07.2005 19:13, insgesamt 2-mal bearbeitet
/* Alle ab jetzt */
$query = "SELECT name,
DAYOFMONTH(datum) AS tag,
MONTH(datum) AS monat,
YEAR(datum) AS jahr,
DAYOFMONTH(datum_ende) AS tagEnde,
MONTH(datum_ende) AS monatEnde,
YEAR(datum_ende) AS jahrEnde,
datum_ende AS checkDatum
FROM datum WHERE datum >= NOW() OR datum_ende >= NOW()";
$result1 = mysql_query($query);
/* Alle überhaupt */
$query = "SELECT name,
DAYOFMONTH(datum) AS tag,
MONTH(datum) AS monat,
YEAR(datum) AS jahr,
DAYOFMONTH(datum_ende) AS tagEnde,
MONTH(datum_ende) AS monatEnde,
YEAR(datum_ende) AS jahrEnde,
datum_ende AS checkDatum
FROM datum";
$result2 = mysql_query($query);
/*Alle ab 1.9.2005 */
$query = "SELECT name,
DAYOFMONTH(datum) AS tag,
MONTH(datum) AS monat,
YEAR(datum) AS jahr,
DAYOFMONTH(datum_ende) AS tagEnde,
MONTH(datum_ende) AS monatEnde,
YEAR(datum_ende) AS jahrEnde,
datum_ende AS checkDatum
FROM datum WHERE datum >= '2005-09-1' OR MONTH(datum_ende) >= '2005-09-1'";
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.