Hi,
steh grad aufm Schlauch...
ich hab mir n kleines Event-Addon gebastelt, in dem
man ein Event per Kalender-Funktion eingeben kann.
Soweit so gut...
Jetzt würd ich gern per Modul immer den aktuellsten/nächsten
Termin anzeigen lassen, nur wie vergleichen...*brettvormkopf*
wenn quasi:
28.03.09
30.03.09
31.03.09
05.04.09
10.04.09
soll also heute nur der 30.03. angezeigt werden...
morgen dann der 31.03.. bis zum 05.04. etc..
Danke schonmal.
grz.Chris
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Hallo,
Du würdest Dir viel Arbeit ersparen, wenn Du das Datum jeweils immer gleich bei der Eingabe in das Addon als Mysql-Timestamp speicherst. Aus dem Timestamp kannst Du dann bei der Ausgabe das schön formatierte Datum erzeugen und vorher einfach per "SELECT .... SORT BY timestamp ASC/DESC LIMIT 2" die Termine sortieren.
Grüße
Johannes
Du würdest Dir viel Arbeit ersparen, wenn Du das Datum jeweils immer gleich bei der Eingabe in das Addon als Mysql-Timestamp speicherst. Aus dem Timestamp kannst Du dann bei der Ausgabe das schön formatierte Datum erzeugen und vorher einfach per "SELECT .... SORT BY timestamp ASC/DESC LIMIT 2" die Termine sortieren.
Grüße
Johannes
hmm..
ok, das datum wird mittels TIMESTAMP in die DB
geschrieben (bsp: 1238483849)
hab jetzt einn wenig gebastelt...(mit hilfe von google )
hmm.. aber obs das Gelbe vom Ei is???
Für jede Verbesserung bin ich dankbar
grz. Chris
ok, das datum wird mittels TIMESTAMP in die DB
geschrieben (bsp: 1238483849)
hab jetzt einn wenig gebastelt...(mit hilfe von google )
hmm.. aber obs das Gelbe vom Ei is???
Code: Alles auswählen
<?php
$now = date('d.m.y', time());
function dateDiff($separator, $endDate, $beginDate)
{
$date1 = explode($separator, $beginDate);
$date2 = explode($separator, $endDate);
$start_date = gregoriantojd($date1[0], $date1[1], $date2[2]);
$end_date = gregoriantojd($date2[0], $date2[1], $date2[2]);
return $end_date - $start_date;
}
$qry = "SELECT * FROM rex_9402_events ORDER BY date DESC LIMIT 2";
$sql = new rex_sql();
$sql->setQuery($qry);
for ($i = 0; $i < $sql->getRows(); $i++)
{
$event_date = date('d.m.y', $sql->getValue('date'));
$begin = $sql->getValue('begin');
$place = $sql->getValue('place');
$details = $sql->getValue('details');
$link = $sql->getValue('link');
$file = $sql->getValue('file');
print $event_date . "<br />";
print dateDiff(".", $event_date, $now). "<br />";
$sql->next();
}
?>
grz. Chris
nicht schön. funzt aber.
Wenns besser geht, nur her damit
Danke. grz. Chris
Code: Alles auswählen
<?php
function restTime ($aktdate, $date) {
if ($date >= $aktdate) {
$date_rest = $date - $aktdate;
return $date_rest;
} else {
return false;
}
}
$now = time();
$heute = date("dmy", time());
$qry = "SELECT * FROM rex_9402_events LIMIT 0,1";
$sql = new rex_sql();
$sql->setQuery($qry);
$out = '<div class="ColumnBox">';
for ($i = 0; $i < $sql->getRows(); $i++)
{
$datum = $sql->getValue('date');
$event_date = date("d.m.y", $sql->getValue('date'));
$begin = $sql->getValue('begin');
$place = $sql->getValue('place');
$details = $sql->getValue('details');
$link = $sql->getValue('link');
$file = $sql->getValue('file');
$sql->next();
//print $begin . '<br />';
$restTime = restTime($now,$datum);
if(date("dmy", $datum) == $heute) {
$out .= '<h2><strong>HEUTE ABEND</strong></h2>';
$out .= '<strong>'.$begin.'</strong><br />';
$out .= '<h3>'. $place . '</h3>';
$out .= '<a href="' .rex_getUrl(2).'" style="display: block; width: 100%; text-align: right;" >MORE INFO</a>';
}
if(date("dmy", $datum) != $heute && $datum > $now && $restTime != false) {
$out .= '<strong>'. $event_date . ' / ' . $begin . '</strong>' . '<br />';
$out .= '<h3>'. $place . '</h3>';
$out .= '<a href="' .rex_getUrl(2).'" style="display: block; width: 100%; text-align: right;" >MORE INFO</a>';
}
}
$out .= '</div>';
$out .= '<div class="clear"></div';
print $out;
Danke. grz. Chris
hallo chris,darwin hat geschrieben:Wenns besser geht, nur her damit
Danke. grz. Chris
dieses script gibt feste, bewegliche und individuelle feiertage aus. es kann zb als template gespeichert werden. was in die ausgabe kommen soll ist natürlich frei wählbar. das ausgangsdatum zur berechnung der verschiedenen kirchlichen festtage ist ostern des aktuellen jahres (php: easter_date).
hier das beispiel für deutschland:
Code: Alles auswählen
<?php
/*
Modul: Feiertage in Deutschland
Bereich: Template
Redaxo Version: alle
HTML-/XHTML-Version: XHTML
Bearbeitung: mow
Datum: 090331
ORIGINAL : http://www.phpforum.de/archiv_23333_Feiertage@berechnen_anzeigen.html
DATUM (date) : http://de.php.net/date
FEIERTAGE CH : http://de.wikipedia.org/wiki/Feiertage_in_Deutschland
FEIERTAGE EUROPA : http://www.feiertagskalender.ch/
Irrtümer vorbehalten. Keine Garantie für Korrektheit der Daten.
$datum = date('d.m.Y'); // tag mt jahr
$uhrzeit = date('H:i:s'); // std min sek
$timestamp = time(); // Anzahl Sekunden seit 01-01-1970 00:00:00 GMT
$datum = date('d.m.Y H:i:s', mktime(01, 23, 45, 06, 07, 2013)); // std min sek mt tag jahr
echo $datum;
*/
function easter($year = null)
{
// Ermöglicht auch Datumsanzeigen ausserhalb 01-01-1970 00:00:00 und 19-01-2038 03:14:08 (UNIX)
#if(is_null($year)) $year = $this->getYear();
if (strlen(strval($year)) == 2)
{
if($year < 70) $year += 2000;
else $year += 1900;
}
if ($year > 2038 || $year < 1901) return false; # limitations of date()/mktime(), if OS == Win change 1901 to 1970!
$d = (((255 - 11 * ($year % 19)) - 21) % 30) + 21;
$delta = $d + ($d > 48) + 6 - (($year + $year / 4 + $d + ($d > 48) + 1) % 7);
$easter = strtotime("+$delta days", mktime(0,0,0,3,1,$year));
return $easter;
}
function getGermanPublicHolidays($year = null)
{
#if(is_null($year)) $year = $this->getYear();
if (!$easter = easter($year)) return false;
else
{
//---------------------
// DE
$wtage_de = array("Sonntag",
"Montag",
"Dienstag",
"Mittwoch",
"Donnerstag",
"Freitag",
"Samstag");
$monate_de = array("",
"Januar",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember");
//---------------------
// FR
$wtage_fr = array("Dimanche",
"Lundi",
"Mardi",
"Mercredi",
"Jeudi",
"Vendredi",
"Samedi");
$monate_fr = array("",
"Janvier",
"Février",
"Mars",
"Avril",
"Mai",
"Juin",
"Juillet",
"Août",
"Septembre",
"Octobre",
"Novembre",
"Décembre");
//---------------------
// DATUM AUSGABE FORMATIERUNG
//---------------------
// Aktueller Zeitstempel
$timestamp = date("mdY");
//---------------------
// DE
// $aktdate = $wtage_de[date("w", $timestamp)].', '.date("d", $timestamp).'. '.$monate_de[date("n", $timestamp)].date(" Y", $timestamp);
$date_de = $wtage_de[date("w")].', '; // Wochentag des gespeicherten Zeitpunktes Deutsch
$date_de .= date("d").'. '; // Wochentag des gespeicherten Zeitpunktes
$date_de .= $monate_de[date("n")]; // Monat des gespeicherten Zeitpunktes Deutsch
$date_de .= date(" Y"); // Jahr des gespeicherten Zeitpunktes
//---------------------
// EN
$date_en = date("l, jS \of\ F Y");
//---------------------
// FR
$date_fr = $wtage_fr[date("w")].', ';
$date_fr .= date("d").'. ';
$date_fr .= $monate_fr[date("n")];
$date_fr .= date(" Y");
// ENDE DATUM AUSGABE FORMATIERUNG
echo 'Aktuelles Datum DE: '.$date_de.' <br />';
echo 'Aktuelles Datum EN: '.$date_en.' <br />';
echo 'Aktuelles Datum FR: '.$date_fr.' <br /><br />';
//---------------------
//////////// TEST
$holidays['test'] = mktime(0,0,0,3,31,$year); // std,min,sek,mt,tag,jahr
$days = $holidays['test'];
$datetimestamp = date("mdY", $days);
$date_de = $wtage_de[date("w", $days)].', ';
$date_de .= date("d", $days).'. ';
$date_de .= $monate_de[date("n", $days)];
$date_de .= date(" Y", $days);
$date_en = date("l, jS \of\ F Y", $days);
$date_fr = $wtage_fr[date("w", $days)].', ';
$date_fr .= date("d", $days).'. ';
$date_fr .= $monate_fr[date("n", $days)];
$date_fr .= date(" Y", $days);
if ($timestamp == $datetimestamp) echo 'TEST 1 : aktdate == date: '.$date_de.' / '.$date_en.' / '.$date_fr.' <br />';
if ($timestamp != $datetimestamp) echo 'TEST 2 : aktdate != date: '.$date_de.' / '.$date_en.' / '.$date_fr.' <br />';
if ($timestamp >= $datetimestamp) echo 'TEST 3 : aktdate >= date: '.$date_de.' / '.$date_en.' / '.$date_fr.' <br />';
if ($timestamp <= $datetimestamp) echo 'TEST 4 : aktdate <= date: '.$date_de.' / '.$date_en.' / '.$date_fr.' <br />';
if ($timestamp > $datetimestamp) echo 'TEST 5 : aktdate > date: '.$date_de.' / '.$date_en.' / '.$date_fr.' <br />';
if ($timestamp < $datetimestamp) echo 'TEST 6 : aktdate < date: '.$date_de.' / '.$date_en.' / '.$date_fr.' <br />';
echo 'timestamp : '.$timestamp.'<br />';
echo 'datetimestamp : '.$datetimestamp.' <br /><br />';
//////////// END TEST
$days = $holidays['Sommerzeit Beginn'] = mktime(2,0,0,3,31-date('w', mktime(2,0,0,3,31,$year)),$year);
// $datetimestamp = date("mdY", $holidays['Sommerzeit Beginn']);
$datetimestamp = date("mdY", $days);
$date_de = $wtage_de[date("w", $days)].', ';
$date_de .= date("d", $days).'. ';
$date_de .= $monate_de[date("n", $days)];
$date_de .= date(" Y", $days);
/*if ($timestamp == $datetimestamp)*/ echo 'Sommerzeit Beginn: '.$date_de.' (Um 02:00 Uhr +1 stellen) <br />';
$days = $holidays['Sommerzeit Ende'] = mktime(2,0,0,10,31-date('w', mktime(2,0,0,10,31,$year)),$year);
// $datetimestamp = date("mdY", $holidays['Sommerzeit Ende']);
$datetimestamp = date("mdY", $days);
$date_de = $wtage_de[date("w", $days)].', ';
$date_de .= date("d", $days).'. ';
$date_de .= $monate_de[date("n", $days)];
$date_de .= date(" Y", $days);
/*if ($timestamp == $datetimestamp)*/ echo 'Sommerzeit Ende: '.$date_de.' (Um 03:00 Uhr -1 stellen) <br /><br />';
//---------------------
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Neujahr'] = mktime(0,0,0,1,1,$year));
if ($timestamp == $datetimestamp) echo 'Neujahr: '.$date_de.' <br />';
if ($timestamp == $datetimestamp) echo 'Neujahr: '.$date_en.' <br />';
if ($timestamp == $datetimestamp) echo 'Neujahr: '.$date_fr.' <br />';
// BW BY ST
$datetimestamp = date("mdY", $holidays['Heilige Drei Könige'] = mktime(0,0,0,1,6,$year));
if ($timestamp == $datetimestamp) echo 'Heilige Drei Könige: '.$date_de.' <br />';
//
$datetimestamp = date("mdY", $holidays['Weiberfastnacht'] = strtotime("-52 days", $easter));
if ($timestamp == $datetimestamp) echo 'Weiberfastnacht: '.$date_de.' <br />';
//
$datetimestamp = date("mdY", $holidays['Rosenmontag'] = strtotime("-48 days", $easter));
if ($timestamp == $datetimestamp) echo 'Rosenmontag: '.$date_de.' <br />';
//
$datetimestamp = date("mdY", $holidays['Fastnacht'] = strtotime("-47 days", $easter));
if ($timestamp == $datetimestamp) echo 'Fastnacht: '.$date_de.' <br />';
//
$datetimestamp = date("mdY", $holidays['Aschermittwoch'] = strtotime("-46 days", $easter));
if ($timestamp == $datetimestamp) echo 'Aschermittwoch: '.$date_de.' <br />';
// (BW)
$datetimestamp = date("mdY", $holidays['Gründonnerstag'] = strtotime("-3 days", $easter));
if ($timestamp == $datetimestamp) echo 'Gründonnerstag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Karfreitag'] = strtotime("-2 days", $easter));
if ($timestamp == $datetimestamp) echo 'Karfreitag: '.$date_de.' <br />';
//
$datetimestamp = date("mdY", $holidays['Karsamstag'] = strtotime("-1 days", $easter));
if ($timestamp == $datetimestamp) echo 'Karsamstag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Ostersonntag'] = $easter);
if ($timestamp == $datetimestamp) echo 'Ostersonntag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Ostermontag'] = strtotime("+1 day", $easter));
if ($timestamp == $datetimestamp) echo 'Ostermontag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Tag der Arbeit'] = mktime(0,0,0,5,1,$year));
if ($timestamp == $datetimestamp) echo 'Tag der Arbeit: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Christi Himmelfahrt'] = strtotime("+39 days", $easter));
if ($timestamp == $datetimestamp) echo 'Christi Himmelfahrt: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Pfingstsonntag'] = strtotime("+49 days", $easter));
if ($timestamp == $datetimestamp) echo 'Pfingstsonntag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Pfingstmontag'] = strtotime("+50 days", $easter));
if ($timestamp == $datetimestamp) echo 'Pfingstmontag: '.$date_de.' <br />';
// BW BY HE NW RP SL (SN) (TH)
$datetimestamp = date("mdY", $holidays['Fronleichnam'] = strtotime("+60 days", $easter));
if ($timestamp == $datetimestamp) echo 'Fronleichnam: '.$date_de.' <br />';
// (BY)
$datetimestamp = date("mdY", $holidays['Augsburger Friedensfest'] = mktime(0,0,0,8,8,$year));
if ($timestamp == $datetimestamp) echo 'Augsburger Friedensfest: '.$date_de.' <br />';
// (BY) SL
$datetimestamp = date("mdY", $holidays['Mariä Himmelfahrt'] = mktime(0,0,0,8,15,$year));
if ($timestamp == $datetimestamp) echo 'Mariä Himmelfahrt: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Tag der Deutschen Einheit'] = mktime(0,0,0,10,3,$year));
if ($timestamp == $datetimestamp) echo 'Tag der Deutschen Einheit: '.$date_de.' <br />';
// (BW) BB MV SN ST TH
$datetimestamp = date("mdY", $holidays['Reformationstag'] = mktime(0,0,0,10,31,$year));
if ($timestamp == $datetimestamp) echo 'Reformationstag: '.$date_de.' <br />';
// BW BY NW RP SL
$datetimestamp = date("mdY", $holidays['Allerheiligen'] = mktime(0,0,0,11,1,$year));
if ($timestamp == $datetimestamp) echo 'Allerheiligen: '.$date_de.' <br />';
//
$datetimestamp = date("mdY", $holidays['Volkstrauertag'] = strtotime("-14 days", strtotime("1 sunday", mktime(0,0,0,11,26,$year))));
if ($timestamp == $datetimestamp) echo 'Volkstrauertag: '.$date_de.' <br />';
// (BY) SN
$datetimestamp = date("mdY", $holidays['Buß- und Bettag'] = strtotime("-11 days", strtotime("1 sunday", mktime(0,0,0,11,26,$year))));
if ($timestamp == $datetimestamp) echo 'Buß- und Bettag: '.$date_de.' <br />';
//
$datetimestamp = date("mdY", $holidays['Totensonntag'] = strtotime("-7 days", strtotime("1 sunday", mktime(0,0,0,11,26,$year))));
if ($timestamp == $datetimestamp) echo 'Totensonntag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['1. Advent'] = strtotime("1 sunday", mktime(0,0,0,11,26,$year)));
if ($timestamp == $datetimestamp) echo '1. Advent: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['2. Advent'] = strtotime("2 sunday", mktime(0,0,0,11,26,$year)));
if ($timestamp == $datetimestamp) echo '2. Advent: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['3. Advent'] = strtotime("3 sunday", mktime(0,0,0,11,26,$year)));
if ($timestamp == $datetimestamp) echo '3. Advent: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['4. Advent'] = strtotime("4 sunday", mktime(0,0,0,11,26,$year)));
if ($timestamp == $datetimestamp) echo '4. Advent: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Heiliger Abend'] = mktime(0,0,0,12,24,$year));
if ($timestamp == $datetimestamp) echo 'Heiliger Abend: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['1. Weihnachtsfeiertag'] = mktime(0,0,0,12,25,$year));
if ($timestamp == $datetimestamp) echo '1. Weihnachtsfeiertag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['2. Weihnachtsfeiertag'] = mktime(0,0,0,12,26,$year));
if ($timestamp == $datetimestamp) echo '2. Weihnachtsfeiertag: '.$date_de.' <br />';
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
$datetimestamp = date("mdY", $holidays['Silvester'] = mktime(0,0,0,12,31,$year));
if ($timestamp == $datetimestamp) echo 'Silvester: '.$date_de.' <br />';
return $holidays;
}
}
getGermanPublicHolidays(date("Y"));
?>
grüsse
mow
best viewed with an open mind!
Pfui zu Timestamps, nimm das SQL-DateTime-Format. Gerade in Deinem Fall macht es Dir das Leben noch einfacher.johannest hat geschrieben:Hallo,
Du würdest Dir viel Arbeit ersparen, wenn Du das Datum jeweils immer gleich bei der Eingabe in das Addon als Mysql-Timestamp speicherst.
Da man aber nicht immer um Timestamps herumkommt (u.a., weil Redaxo die ja benutzt), hab ich mir über Jahre hinweg mal eine Utility-Klasse voller Konvertierungsmethoden für solche Zwecke zusammengebaut, kann die gern mal raussuchen, bin nur gerade nicht am Arbeitsplatz.
gern...
hab jezt wein wenig mysql durchgeforstet
und bin nun zum folgenden Ergebnis gekommen:
Somit hab ich schonmal immer den heute bzw. aktuellsten ...
grz. Chris
hab jezt wein wenig mysql durchgeforstet
und bin nun zum folgenden Ergebnis gekommen:
Code: Alles auswählen
(SELECT event_id, date, begin, event, place, details, link, file,
FROM_UNIXTIME(`date`,'%d.%m.%Y') AS datum
FROM rex_9402_events
WHERE FROM_UNIXTIME(date) >= DATE(NOW())
)
UNION
(SELECT event_id, date, begin, event, place, details, link, file,
FROM_UNIXTIME(`date`,'%d.%m.%Y') AS datum
FROM rex_9402_events
WHERE FROM_UNIXTIME(date) = DATE(NOW())
)
ORDER BY date ASC LIMIT 0,1
grz. Chris