Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Geburtstagsliste
#1
Ich hoffe ich bin hier richtig. Ich bin gerade dabei eine Geburtstagsliste für mein Forum zu machen. Die Liste soll die Geburtstage, die im Profil eingetragen wurden, anzeigen.

Ich hatte noch eine Geburtstagsliste von einem wbblite Forum und habe überlegt, diese als Grundlage zu verwenden. Die Ausgabe von den Monaten funktioniert soweit, wenn ich die birthdays.php aufrufe, dann sehe ich dort alle Monate. Allerdings zeigt es keine Einträge in den Monaten an. Ich vermute, dass das damit zusammen hängt, dass die Geburtstage bei Mybb und wbblite unterschiedlich gespeichert werden, bei wbblite hatten sie das Format YYYY.MM.DD und bei Mybb D.M.YYYY.

Hier mal der Teil vom Code:
PHP-Code:
 $birthdays_userbit "";
 $birthdays_anzahl 0;
 $birthdays $db->query("SELECT uid, username, birthday, usergroup FROM ".TABLE_PREFIX."users WHERE ".TABLE_PREFIX."users.usergroup <> '2' AND birthday!='' AND DATE_FORMAT(birthday,'%m')='$monatszahl' ORDER BY MONTH(`birthday`) ASC, DAY(`birthday`) ASC, YEAR(`birthday`) ASC, username ASC");

 while($birthdays_list $db->fetch_array($birthdays)){
  $birthdays_anzahl++;
  $birthdays_userid $birthdays_list[uid];
  $birthdays_username $birthdays_list[username];
  $birthdays_datum preg_split('/[.\/-]/'$birthdays_list[birthday]);
  $birthdays_jahr $birthdays_datum[2];
  $birthdays_datum1 $birthdays_datum[0].".".$birthdays_datum[1].".".$birthdays_jahr;

  eval("\$birthdays_userbit .= \"".$templates->get("birthdays_userbit")."\";");
 

Ich bin noch kein großer Experte auf dem Gebiet, deswegen würde ich mich über Hilfe freuen was da nicht stimmt bzw. warum keine Geburtstage angezeigt werden.
Zitieren
#2
(14.11.2015, 12:13)aschenputtel schrieb: bei Mybb D.M.YYYY.
Wie kommst du darauf? Das MyBB speichert das Geburtstag als Tag-Monat-Jahr, ohne dabei irgendeinem Standard zu folgen. Die Abfrage sollte daher so aussehen:
PHP-Code:
$birthdays $db->simple_select('users''uid, username, birthday, usergroup'"usergroup != 2 AND birthday LIKE '%-{$monatszahl}-%'", array('order_by' => 'birthday ASC, username ASC')); 

PS: Für die Array-Zugriffe solltest du statt:
PHP-Code:
$birthdays_list[uid]; 
dies so schreiben:
PHP-Code:
$birthdays_list['uid']; 
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Vielen Dank für die schnelle Antwort, jetzt passt alles.
Zitieren
#4
Mir ist aufgefallen, dass die Geburtstage nicht richtig sortiert werden, der 16. eines Monats kommt z.B. vor dem 08. eines Monats. Ich nehme an das kommt daher, dass ich die 0 vor der 8 manuell hinzufüge. Wie kann ich das umgehen?

PHP-Code:
$birthdays $db->simple_select('users''uid, username, birthday, usergroup'"usergroup != 2 AND birthday LIKE '%-{$monatszahl}-%'", array('order_by' => 'birthday ASC, username ASC'));

while(
$birthdays_list $db->fetch_array($birthdays)){
 $birthdays_anzahl++;
 $birthdays_userid $birthdays_list['uid'];
 $birthdays_username $birthdays_list[username];
 $birthdays_datum preg_split('/[.\/-]/'$birthdays_list[birthday]);
 if($birthdays_datum[0] < 10$birthdays_tag "0".$birthdays_datum[0];
 else $birthdays_tag $birthdays_datum[0];
 if($birthdays_datum[1] < 10$birthdays_monat "0".$birthdays_datum[1];
 else $birthdays_monat $birthdays_datum[1];
 $birthdays_datum1 $birthdays_tag.".".$birthdays_monat.".";

 eval("\$birthdays_userbit .= \"".$templates->get("birthdays_userbit")."\";");

Zitieren
#5
(06.12.2015, 15:26)aschenputtel schrieb: Mir ist aufgefallen, dass die Geburtstage nicht richtig sortiert werden, der 16. eines Monats kommt z.B. vor dem 08. eines Monats. Ich nehme an das kommt daher, dass ich die 0 vor der 8 manuell hinzufüge. Wie kann ich das umgehen?

Du fügst es manuell ein, willst es aber nicht, wieso fügst du es dann überhaupt hinzu?  Huh
Zitieren
#6
Die Datenbankabfrage liefert die Geburtstage in der korrekten Reihenfolge. Ich habe das gerade eben nochmal getestet.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#7
Ich will die 0 damit alle Tage zweistellig angezeigt werden. Deswegen füge ich sie hinzu. Damit da nicht 1.12. sondern 01.12. steht. War vielleicht nicht deutlich genug gesagt, ich will nicht die 0 umgehen sondern die falsche Sortierung, also 08.12. soll vor 16.12. kommen.

Wenn die Abfrage die richtige Reihenfolge liefert, warum wird das dann nicht so angezeigt? Sad
Zitieren