Publikationszeitraum ohne Angabe einer Jahreszahl möglich?

Fragen und Diskussionen zu laufenden ConPresso 4.x Projekten werden in diesem Forum diskutiert.
Antworten
silke
ConPresso-User
Beiträge: 50
Registriert: 20.06.2008 07:49
Hat sich bedankt: 1 Mal

Publikationszeitraum ohne Angabe einer Jahreszahl möglich?

Beitrag von silke »

Hallo zusammen!
Wir haben eine Rubrik in der wir immer die Geburstage unserer Mitglieder auf der Seite anzeigen, und zwar immer ein kleiner Text und ein Bild des Geburststagskinds.
Als Publikationszeitraum ist immer der Geburtstag von 00:01 - 23:59 Uhr eingegeben. Problematik an der Sache ist, das sich der Geburtstag ja jedes Jahr wiederholt und ich deshalb immer, so alle drei Monate, die vergangenen Geburtstage überarbeite und die neue Jahreszahl eingebe.....ganz ehrlich: das ist ziemlich nervig. Nun stellt sich mir die Frage, ob es möglich ist, da irgendwas zu ändern, so das ich nur den Tag ohne Eingabe der Jahreszahl eintragen kann - und der Artikel somit jedes Jahr automatisch an dem Tag online geht.... geht das? Und wenn ja, wie?

Vielen Dank schon mal vorab,

Silke
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7369
Registriert: 01.01.1970 01:00
Hat sich bedankt: 112 Mal
Danksagung erhalten: 936 Mal
Kontaktdaten:

Beitrag von MarkusR »

Nein, das geht nicht.
Es ist auch schlecht möglich ConPresso dazu zu überreden.

Das einfachste wäre ein cronjob auf dem Server, der entweder eine SQL-Abfrage ausführt, die alle Datumswerte, die mindestens einen Tag in der Vergangenheit liegen, um ein Jahr nach vorne datiert.
Alternativ kann der cronjob auch ein PHP-Script ausführen, das die Daten ausliest, umwandelt und dann updatet, falls komplexe SQL-Ausdrücke nicht so Dein Fall sind.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
silke
ConPresso-User
Beiträge: 50
Registriert: 20.06.2008 07:49
Hat sich bedankt: 1 Mal

Beitrag von silke »

Hallo Markus,

danke für die schnelle Antwort - schade, aber ich werd mich mal schlau machen.....
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7369
Registriert: 01.01.1970 01:00
Hat sich bedankt: 112 Mal
Danksagung erhalten: 936 Mal
Kontaktdaten:

Beitrag von MarkusR »

Die Funktion DATE_ADD(datum, INTERVAL 1 YEAR) sollte in einem SQL-String das Gewünschte erreichen.

Also etwa in der Form UPDATE table SET datum1=DATE_ADD(datum1, INTERVAL 1 YEAR), datum2=DATE_ADD(datum2, INTERVAL 1 YEAR) WHERE datum1<DATE_SUB(NOW(), INTERVAL 1 DAY);

Das als Denkanstoß, nichtg als fertige Lösung. Habe es selbst nicht getestet und auch nicht die Tabellen betrachtet.

Auf jeden Fall sollte ein cronjob das machen, denn eine Einbindung z.B. in den ConPresso-Header riskiert, daß ggf. die Operation bei zwei Seitenabrufen simultan gestartet wird und somit gleich 2 Jahre aufaddiert werden.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7369
Registriert: 01.01.1970 01:00
Hat sich bedankt: 112 Mal
Danksagung erhalten: 936 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ich habe es jetzt mal ausprobiert:

UPDATE cpo4_news
SET pub_datum = DATE_ADD(pub_datum, INTERVAL 1 YEAR),
verfallsdatum = DATE_ADD(verfallsdatum, INTERVAL 1 YEAR)
WHERE verfallsdatum < DATE_SUB(NOW(), INTERVAL 1 DAY)
AND rubric_id = 1;

funktioniert wie ich es mir gedacht habe. Die roten Angaben mußt DU natürlich an Deine Bedürfnisse anpassen.

Das speicherst Du dann z.B. als birthdays.sql ab und erstellt einen cronjob, der
mysql -uuser -ppassword database < /pfad/zu/der/datei/birthdays.sql
einmal täglich (oder wöchentlich oder monatlich...) aufruft
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7369
Registriert: 01.01.1970 01:00
Hat sich bedankt: 112 Mal
Danksagung erhalten: 936 Mal
Kontaktdaten:

Beitrag von MarkusR »

Falls Dir keine cronjobs zur Verfügung stehen könntest Du auch versuchen es per PHP in den header zu packen, also z.B.

Code: Alles auswählen

$birthday = new DB;
$birthday->query("UPDATE cpo4_news SET pub_datum = DATE_ADD(pub_datum, INTERVAL 1 YEAR), verfallsdatum = DATE_ADD(verfallsdatum, INTERVAL 1 YEAR) WHERE verfallsdatum < DATE_SUB(NOW(), INTERVAL 1 DAY) AND rubric_id = 1");
Das findet dann aber bei jedem Seitenaufruf statt, also millionenfach öfter als nötig.
Die Abfrage ist aber nicht kompliziert und sollte daher nicht das System ausbremsen. Die Anzeige des Geburtstagskindes selbst ist tausendfach mehr Aufwand für den Server...
Daß aus Versehen doppelt upgedatet wird sollte eigentlich nicht passieren.

Die cronjob-Version wäre sicher weniger problematisch und ressourcenschonender.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Antworten