Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
beeviZ
Threadersteller
Dabei seit: 30.09.2002
Ort: -
Alter: -
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
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 20.07.2005 18:01
Titel
|
|
|
Das hatten wir vor kurzem schonmal. Ich würd da SQL-Funktionen zum Vergleich verwenden:
Code: |
SELECT * FROM termine WHERE datum > NOW() OR datum_ende > NOW()
|
sollte doch eigentlich schon reichen, oder?
//
Ja, reicht:
Code: | <?
$user = "root";
$pw ="";
$base="test";
$server="localhost";
$db = mysql_connect ( $server, $user, $pw);
mysql_select_db($base, $db);
/* 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'";
$result3 = mysql_query($query);
?>
<html>
<head>
<title>Db-Test</title>
</head>
<body>
<h1>Alle ab jetzt:</h1>
<table border="1" cellpadding="5" cellspacing="5">
<tr>
<th>Name</th>
<th>Start</th>
<th>Ende</th>
</tr>
<?while ($row = mysql_fetch_object($result1)):?>
<tr>
<td><?=$row->name?>: </td>
<td><?=$row->tag?>.<?=$row->monat?>.<?=$row->jahr?></td>
<td>
<?if($row->checkDatum == NULL):?>
—
<?else:?>
<?=$row->tagEnde?>.<?=$row->monatEnde?>.<?=$row->jahrEnde?>
<?endif?>
</td>
</tr>
<?endwhile?>
</table>
<h1>Alle, auch die beendeten:</h1>
<table border="1" cellpadding="5" cellspacing="5">
<tr>
<th>Name</th>
<th>Start</th>
<th>Ende</th>
</tr>
<?while ($row = mysql_fetch_object($result2)):?>
<tr>
<td><?=$row->name?>: </td>
<td><?=$row->tag?>.<?=$row->monat?>.<?=$row->jahr?></td>
<td>
<?if($row->checkDatum == NULL):?>
—
<?else:?>
<?=$row->tagEnde?>.<?=$row->monatEnde?>.<?=$row->jahrEnde?>
<?endif?>
</td>
</tr>
<?endwhile?>
</table>
<h1>Alle in ferner Zukunft:</h1>
<table border="1" cellpadding="5" cellspacing="5">
<tr>
<th>Name</th>
<th>Start</th>
<th>Ende</th>
</tr>
<?while ($row = mysql_fetch_object($result3)):?>
<tr>
<td><?=$row->name?>: </td>
<td><?=$row->tag?>.<?=$row->monat?>.<?=$row->jahr?></td>
<td>
<?if($row->checkDatum == NULL):?>
—
<?else:?>
<?=$row->tagEnde?>.<?=$row->monatEnde?>.<?=$row->jahrEnde?>
<?endif?>
</td>
</tr>
<?endwhile?>
</table>
</body>
</html> |
Zuletzt bearbeitet von am Mi 20.07.2005 18:38, insgesamt 2-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst So 24.07.2005 10:54
Titel
|
|
|
Keine Ursache, mach ich gern nach Feierabend weil ich eh nix besseres zu tun hab.
|
|
|
|
|
beeviZ
Threadersteller
Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht:
|
Verfasst So 24.07.2005 13:57
Titel
|
|
|
danke. funktionierte aber leider auch nich ganz. habs aber jetzt anders gelöst bekommen.
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mo 25.07.2005 13:02
Titel
|
|
|
natürlich funktioniert das. du musst die queries noch anpassen natürlcih.
|
|
|
|
|
caZpa
Account gelöscht
Ort: -
|
Verfasst Mo 25.07.2005 14:06
Titel
|
|
|
kuhl!
genau sowas war ich auch am planen dranne.
hat sich das reduziert.
danke schön. werd ich später mal ausprobieren.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Vernünftiger Veranstaltungskalender?
Veranstaltungskalender mit Landkarte für Webseite
[PHP] Date ADD
[PHP] String -> date
Sind WAP-Seiten noch up to date?
SQL Datentype - Brauche DATE für Format 23.09.2010
|
|
|
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.
|
|