Hallo zusammen,
ich habe mal einen merkwürdigen Effekt bei der Anzeige der Geburtstage. Gibt es da etwa bekannte Fehler?
Zur Beschreibung:
In unserem Forum ist die Geburtstagsliste aktiviert. Da hat auch bisher funktioniert, zuletzt am letzten Donnerstag.
Um mit Änderungen und MODs probieren zu können habe ich ein identisches Testforum. Das habe ich auch gerade erst am Freitag komplett auf den aktuellen Stand gebracht, also aus dem Echtforum (fast) alles per FTP runtergeladen, zusätzlich die Styles exportiert (da in der DB gespeichert) und die ganze Datenbank gesichert. Dann alles in das Testsystem. Hat auch geklappt, sind beide völlig identisch.
Jetzt habe ich gestern ein paar MODs im Testsystem eingebaut, damit man sich das erst mal anschauen kann, und sich dann dafür oder dagegen entscheiden.
Unter anderem den Upcoming Birthday, der die Geburtstage schon im Voraus anzeigt. Wollte schon die Tage raufstellen, damit ich auch was sehe, aber zu meiner Überraschung hatte ich gleich eine ganze Zeile (8 Leute) da stehen. Davon die ersten beiden mit dem Geburtstag heute.
Hab mich also erstmal gefreut, alles erfolgreich verlaufen, auch die anderen MODs haben geklappt.
Jetzt kommt das Problem: Es wird heute, also nach 0 Uhr, und die beiden mit dem heutigen Geburtstag verschwinden aus der unteren Liste. Aber sie tauchen auch nicht bei den heutigen Geburtstagen, also der Standard-Liste, auf. Habe erstmal alle Dateien untersucht, die ich beim Einbau geändert hatte, wahrscheinlich doch irgendwo ein Fehler passiert. Habe aber nichts gefunden.
Jetzt schaue ich ins Echtsystem. Dort ist überhaupt nichts gemacht worden, seit ein paar Wochen, da hatte ich den "Wer war online" eingebaut, und der funktioniert auch super. Aber seitdem nichts gemacht, nur am Freitag komplett kopiert. Und am Donnerstag hat es ja noch richtig funktioniert, mit einem Geburtstag. Da müssten ja jetzt die beiden heutigen Geburtstage stehen, aber da steht auch nicht.
Diesen Beitrag hier habe ich schon gefunden, ansonsten eigentlich nichts passendes. Habe auch das "and BIRTHDAY_LIST" mal aus dem Template entfernt, um die Geburtstagsliste zu erzwingen. Sie wurde dann auch angezeigt, aber da stand "Heute hat keine Mitglied Geburtstag."
Habe natürlich noch mal die Profile überprüft, 2 Leute haben heute Geburstag und müssten demnach in der Liste stehen.
Hat da jemand ne Idee, was das sein kann?
Fehler in Geburtstagsliste?
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Fehler in Geburtstagsliste?
Meine SQL-Statements sind immer ohne Tabellen-Prefix. Also ggf. "phpbb_" oder Euer Prefix einfügen.
KEIN Support auf unaufgeforderte PN
KEIN Support auf unaufgeforderte PN
Re: Fehler in Geburtstagsliste?
So, ich habe mal selbst weitergeforscht, und auch schon das meiste rausbekommen.
Habe einem Testuser mal den Geburtstag auf heute eingetragen. Steht so in der Datenbank
und wird auch in der Geburtstagsliste korrekt angezeigt.
Bei meinen beiden Usern die nicht in der Liste stehen, steht in der Datenbank
und mit der 0 vor der 5 wird das nicht gefunden.
Eigentlich wäre mein Plan jetzt, die Stelle zu finden wo die Geburtstagsliste generiert wird, also die User anhand des eingetragenen Datums selektiert werden, und dann die Selektierung zu ändern
Die MOD hat ja auch kein Problem mit der 0 vorne im Monat. Da habe ich aber die Funktion auch schon gefunden, der schliesst mit dem SQL nur die User aus, die nur eine 0 im Monat oder im Tag oder in beidem haben, oder die gar keine Datum eingetragen haben. Die weitere Auswahl, wer in den Anzeigezeitraum fällt, geschieht wol mit php.
Weiss denn jemand, wo die Funktion steckt, die die Geburtstagsliste generiert? Kann man die da so ändern dass statt "Leerzeichen5" auch "05" gefunden wird?
Habe einem Testuser mal den Geburtstag auf heute eingetragen. Steht so in der Datenbank
Code: Alles auswählen
26- 5-1972Bei meinen beiden Usern die nicht in der Liste stehen, steht in der Datenbank
Code: Alles auswählen
26-05-1979
26-05-1984Eigentlich wäre mein Plan jetzt, die Stelle zu finden wo die Geburtstagsliste generiert wird, also die User anhand des eingetragenen Datums selektiert werden, und dann die Selektierung zu ändern
Die MOD hat ja auch kein Problem mit der 0 vorne im Monat. Da habe ich aber die Funktion auch schon gefunden, der schliesst mit dem SQL nur die User aus, die nur eine 0 im Monat oder im Tag oder in beidem haben, oder die gar keine Datum eingetragen haben. Die weitere Auswahl, wer in den Anzeigezeitraum fällt, geschieht wol mit php.
Weiss denn jemand, wo die Funktion steckt, die die Geburtstagsliste generiert? Kann man die da so ändern dass statt "Leerzeichen5" auch "05" gefunden wird?
Meine SQL-Statements sind immer ohne Tabellen-Prefix. Also ggf. "phpbb_" oder Euer Prefix einfügen.
KEIN Support auf unaufgeforderte PN
KEIN Support auf unaufgeforderte PN
- oxpus
- Ehemaliges Teammitglied
- Beiträge: 5396
- Registriert: 03.02.2003 12:33
- Wohnort: Bad Wildungen
- Kontaktdaten:
Re: Fehler in Geburtstagsliste?
Hallo,
vielleicht klappt das:
Öffne die Datei index.php und finde dort die Zeile
Diese ersetzen mit
und ausprobieren.
vielleicht klappt das:
Öffne die Datei index.php und finde dort die Zeile
Code: Alles auswählen
WHERE user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%'Code: Alles auswählen
WHERE (user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%' OR user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-0%2d-', $now['mday'], $now['mon'])) . "%')Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Re: Fehler in Geburtstagsliste?
Hallo oxpus,
vielen Dank für den Tip. Habe das Problem jetzt gelöst.
Die index.php mit der Stelle zur Generierung der Geburtstagsliste hatte ich auch gerade gefunden, aber mich noch nicht mit der sprintf-Funktion auseinandergesetzt.
Habe Deinen Tip mal ausprobiert, und es funktioniert (fast). Man muss nur die Parameter drehen, also bei der sprintf-Funktion muss es nicht heissen 0%2d sondern %02d, dann wird nicht mit Leerzeichen aufgefüllt sondern mit einer 0.
Hab das jetzt doch anders gelöst, indem ich die Einträge in der Datenabnk geändert habe, weil
1. das gleiche ja auch bei den Zahlen des Tages noch vorkommt, damit hätte ich dann ja 4 Möglichkeiten, also noch 2 OR mehr und
2. auch mit dieser Änderung z.B. die Geburtstagsanzeige im Announcement-Center auch noch nicht funktioniert. Diese MOD berechnet das also wieder wo anders. Zwar die gleiche Funktionsweise, aber an anderer Stelle.
Die "falschen" Daten mit führender 0 dürften auch alle aus einem alten Forum stammen und hierher konvertiert worden sein. Ist also nur bei Usern so, die hier ihr Profil noch nicht gespeichert haben. Dabei wird es nämlich richtig, mit führendem Leerzeichen geschrieben.
Habe also alle alten Einträge hiermit berichtigt:
vielen Dank für den Tip. Habe das Problem jetzt gelöst.
Die index.php mit der Stelle zur Generierung der Geburtstagsliste hatte ich auch gerade gefunden, aber mich noch nicht mit der sprintf-Funktion auseinandergesetzt.
Habe Deinen Tip mal ausprobiert, und es funktioniert (fast). Man muss nur die Parameter drehen, also bei der sprintf-Funktion muss es nicht heissen 0%2d sondern %02d, dann wird nicht mit Leerzeichen aufgefüllt sondern mit einer 0.
Hab das jetzt doch anders gelöst, indem ich die Einträge in der Datenabnk geändert habe, weil
1. das gleiche ja auch bei den Zahlen des Tages noch vorkommt, damit hätte ich dann ja 4 Möglichkeiten, also noch 2 OR mehr und
2. auch mit dieser Änderung z.B. die Geburtstagsanzeige im Announcement-Center auch noch nicht funktioniert. Diese MOD berechnet das also wieder wo anders. Zwar die gleiche Funktionsweise, aber an anderer Stelle.
Die "falschen" Daten mit führender 0 dürften auch alle aus einem alten Forum stammen und hierher konvertiert worden sein. Ist also nur bei Usern so, die hier ihr Profil noch nicht gespeichert haben. Dabei wird es nämlich richtig, mit führendem Leerzeichen geschrieben.
Habe also alle alten Einträge hiermit berichtigt:
Code: Alles auswählen
UPDATE users
SET user_birthday = concat(' ', substring(user_birthday FROM 2))
WHERE user_birthday LIKE '0_-__-____';
UPDATE users
SET user_birthday = concat(left(user_birthday, 3), ' ', substring(user_birthday FROM 5))
WHERE user_birthday LIKE '__-0_-____';Meine SQL-Statements sind immer ohne Tabellen-Prefix. Also ggf. "phpbb_" oder Euer Prefix einfügen.
KEIN Support auf unaufgeforderte PN
KEIN Support auf unaufgeforderte PN
- oxpus
- Ehemaliges Teammitglied
- Beiträge: 5396
- Registriert: 03.02.2003 12:33
- Wohnort: Bad Wildungen
- Kontaktdaten:
Re: Fehler in Geburtstagsliste?
Na bitte, geht doch.
War zwar von mir nur "hingewürfelt", aber man lernt ja nie aus.
Danke für die ausführliche Rückmeldung.
War zwar von mir nur "hingewürfelt", aber man lernt ja nie aus.
Danke für die ausführliche Rückmeldung.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!