Beckebans
Titel: Geburtstagsliste
Forensoftware: WBB Lite 1
Autor: Beckebans
Version: v1.2.0
Datum: 06.02.2013
Support: Nur hier in Thread.
Beschreibung:
Es werden die Geburtstage der Forenmitglieder nach Monat sortiert aufgelistet.
- Eine Altersanzeige und die Anzahl der Geburtstage im Monat können einzeln an- bzw. ausgeschaltet werden.
- Start- und Endjahr der Altersanzeige können frei gewählt werden.
- Für das Alter kann der aktuelle oder ein fiktiver Zeitpunkt dienen.
- Monate können in mehrere Spalten sortiert werden.
Eine Anleitung für Erweiterungen (Header-Button, "Wer ist Wo?" Integration) liegt bei.
weiter zum Download
indivina
Hallo,
Der Hack funktioniert klasse und macht auch keine Probleme, allerdings hätte ich eine Frage.
Du nutzt ja das Geburtstags Profilfeld welches vom Anfang an drin ist. Dieses Feld wird auch vom Kalender und vom Geburtstage auf den Index genutzt. Nun wollte ich fragen ob es möglich ist ein Neues Datumfeld anzulegen und dieses auslesen zu lassen. Am allerbesten wäre es, wenn es mit dem Profilfelder Hack gehen würde, dort ein Feld erstellt und das auslesen lässt. Ist das überhaupt möglich und wenn ja, wie?
Und warum das ganze? Du hast die Liste ja schon so fertig gemacht, dass man sie für RPG Charaktere nutzen kann. Ich hätte halt gern eine Geburtstagsliste für die User Geburtstage und eine nur für die Charaktere. Damit die User im Kalender und auf den Index angezeigt werden wenn sie Geburtstag haben und die Charaktere nur in der Liste auftauchen.
Wäre klasse wenn es dafür eine Lösung geben würde *knuddel*
Lg
Beckebans
Teste mal dieses:
==> geburtstage.php
Suche:
php: |
1:
|
$geburtstage = $db->query("SELECT userid, username, birthday FROM bb".$n."_users WHERE activation='1' AND birthday!='0000-00-00' AND DATE_FORMAT(birthday,'%m')='$monatszahl' ORDER BY MONTH(`birthday`) ASC, DAY(`birthday`) ASC, YEAR(`birthday`) ASC, username ASC"); |
|
Ersetzen durch:
-> Hier die Zahl 999 überall durch die ID des Profilfeldes mit dem Datumsformat ersetzen.
php: |
1:
|
$geburtstage = $db->query("SELECT u.userid, u.username, uf.field999 AS birthday FROM bb".$n."_users u LEFT JOIN bb".$n."_userfields uf USING (userid) WHERE u.activation='1' AND uf.field999!='0000-00-00' AND DATE_FORMAT(uf.field999,'%m')='$monatszahl' ORDER BY MONTH(`field999`) ASC, DAY(`field999`) ASC, YEAR(`field999`) ASC, u.username ASC"); |
|
indivina
Yeah das klappt perfekt, danke du bist echt ein Schatz
Sunset-Blvd
Hallo,
ich wollte die Liste auch für die Charaktere haben.
Hab dann bei Profilfelder eins angelegt mit Datumseingabe und die Datei geburtstag.php so abgewandelt, wie unten beschrieben.
Allerdings bekomme ich einen Datenbankfehler:
SQL-DATABASE ERROR
Database error in WoltLab Burning Board: Invalid SQL: SELECT u.userid, u.username, uf.field99 AS birthday FROM bb1_users u LEFT JOIN bb1_userfields uf USING (userid) WHERE u.activation='1' AND uf.field99!='0000-00-00' AND DATE_FORMAT(uf.field99,'%m')='01' ORDER BY MONTH(`field99`) ASC, DAY(`field99`) ASC, YEAR(`field99`) ASC, u.username ASC
mysql error: Unknown column 'uf.field99' in 'field list'
mysql error number: 1054
Date: 17.04.2014 @ 02:45
Script: /geburtstage.php
Referer:
Kann mir Jemand sagen, wo der Fehler liegen könnte?
Beckebans
Du musst das "field99" überall noch gegen das Feld mit der richtigen Nummer tauschen. Im Moment versucht das Script das Profilfeld Nr. 99 auszulesen, was aber nicht klappt da es das Feld gar nicht gibt. Im ACP kannste die passende Nummer sehen.
Sunset-Blvd
Das "field" muss auch weg oder nur die 99?
Pigsel
Zitat: |
Original von Beckebans
Du musst das "field99" überall noch gegen das Feld mit der richtigen Nummer tauschen. Im Moment versucht das Script das Profilfeld Nr. 99 auszulesen, was aber nicht klappt da es das Feld gar nicht gibt. Im ACP kannste die passende Nummer sehen. |
dem Text nach nur die 99 denn der Bezeichner für "Feld" - "field" bleibt ja erhalten es wird nur wie es geschrieben steht, die "richtige Nummer" für das Feld benötigt
also müsste das so aussehen "field"richtige-nummer" zB. field5 field12 field25 etc.
das field als Bezeichner bleibt, denke ich mal dem Text nach, stehen.
Beckebans
Genau so ist es.
levi-chan
Gibt es auch eine Möglichkeit für die Geburtstagsliste eine fiktives Jahr zu setzen? Sprich, im Forum ist das Jahr 1994 und die User/Charaktere sind dementsprechend vor 1994 geboren. Mir geht's darum, dass das Alter dann entsprechend zum Foren-Jahr angezeigt wird.
EDIT Nevermind, wer lesen kann ist klar im Vorteil.
Allerdings hätte ich eine andere Frage! Ist es realisierbar, eine derartige Geburtstagsliste auch hübsch kompakt auf die Index-Seite zu packen? Sprich eine Tabelle, wo alle Geburtstage hintereinander sortiert mit Altersangabe aufgelistet werden?
Pigsel
versuchsweise den Code aus der php bei der index.php reinkippen und dann die templates in der index.tpl verknüpfen ..
ob das so einfach ginge weiß ich aber aus dem Stand ungetestet nicht .. falls nicht kann man ja weiter dran feilen falls es fehlermeldungen gibt, bitte alle Zeichen hier reinkopieren, das man weiß was wo wie stört oder zuviel ist oder zu wenig
levi-chan
hab den code jetzt in die index.php eingepflegt und es immerhin schon mal geschafft, dass die geburtstage auch erscheinen. allerdings stehen sie nicht hintereinander sondern werden weiterhin in einer tabelle angezeigt.
hab den code schon ein bisschen abgespeckt und (hoffentlich) sinnloses rausgeschmissen. das steht jetzt noch drin:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
|
$monate_reihe = 0;
for($monat = 1; $monat < 13; $monat++) {
if($monat < 10) $monatszahl = "0".$monat;
else $monatszahl = $monat;
if($monatszahl == "01") $monatsname = "Januar";
elseif($monatszahl == "02") $monatsname = "Februar";
elseif($monatszahl == "03") $monatsname = "März";
elseif($monatszahl == "04") $monatsname = "April";
elseif($monatszahl == "05") $monatsname = "Mai";
elseif($monatszahl == "06") $monatsname = "Juni";
elseif($monatszahl == "07") $monatsname = "Juli";
elseif($monatszahl == "08") $monatsname = "August";
elseif($monatszahl == "09") $monatsname = "September";
elseif($monatszahl == "10") $monatsname = "Oktober";
elseif($monatszahl == "11") $monatsname = "November";
elseif($monatszahl == "12") $monatsname = "Dezember";
else $monatsname = "Sonstige";
$geburtstage_userbit = "";
$geburtstage_anzahl = 0;
$geburtstage = $db->query("SELECT u.userid, u.username, uf.field4 AS birthday FROM bb".
$n."_users u LEFT JOIN bb".$n."_userfields uf USING (userid) WHERE u.activation='1' AND
uf.field4!='0000-00-00' AND DATE_FORMAT(uf.field4,'%m')='$monatszahl' ORDER BY MONTH(`field4`)
ASC, DAY(`field4`) ASC, YEAR(`field4`) ASC, u.username ASC");
while($geburtstage_list = $db->fetch_array($geburtstage)){
$geburtstage_anzahl++;
$geburtstage_userid = $geburtstage_list[userid];
$geburtstage_username = $geburtstage_list[username];
$geburtstage_datum = preg_split('/[.\/-]/', $geburtstage_list[birthday]);
if($geburtstage_datum[0] == "0000") $geburtstage_jahr = "";
elseif($geburtstage_datum[0] < intval($datum_start)) $geburtstage_jahr = "";
elseif($geburtstage_datum[0] > intval($datum_ende)) $geburtstage_jahr = "";
else $geburtstage_jahr = $geburtstage_datum[0];
$geburtstage_datum1 = $geburtstage_datum[2].".".$geburtstage_datum[1];
if(intval($geburtstage_alter_ein) == 1 && $geburtstage_jahr) {
$geburtstage_alter = intval($geburtstage_alter_jahr)-$geburtstage_jahr;
if($geburtstage_datum[1] > intval($geburtstage_alter_monat)) $geburtstage_alter--;
else if($geburtstage_datum[1] == intval($geburtstage_alter_monat) && $geburtstage_datum[2] >
intval($geburtstage_alter_tag)) $geburtstage_alter--;
if($geburtstage_alter == "-1") $geburtstage_alter1 = " (wird in ".abs
($geburtstage_alter)." Jahr geboren)";
elseif($geburtstage_alter < "-1") $geburtstage_alter1 = " (wird in ".abs
($geburtstage_alter)." Jahren geboren)";
elseif($geburtstage_alter == "1") $geburtstage_alter1 = " (".$geburtstage_alter.")";
else $geburtstage_alter1 = " (".$geburtstage_alter.")";
} else $geburtstage_alter1 = "";
if(intval($geburtstage_alter_position) == 0) $geburtstage_alter2 = "";
else {
$geburtstage_alter2 = $geburtstage_alter1;
$geburtstage_alter1 = "";
}
eval("\$geburtstage_monatbit .= \"".$tpl->get("geburtstage_monatbit")."\";");
}
eval("\$geburtstage_userbit .= \"".$tpl->get("geburtstage_userbit")."\";");
} |
|
Pigsel
freut mich das sie angezeigt werden, aber die Ausgaben bitte grundsätzlich nur über die Templates regeln, damit die funktion in keiner Weise behindert oder verändert wird ..
was man am Ende im Template an Variablen ausgibt spielt keine Rolle .. und in welcher Form die angezeigt werden auch nicht, solange die Steuerung intakt bleibt ..
kannst du index.php und die emplates zu der geburtstagsliste mal anhängen und beschreiben wie du die ausgabe haben magst?
levi-chan
danke, dass du dir die mühe machst! allerdings hab ich mittlerweile so lang dran rumgespielt, dass mir gar nichts mehr angezeigt wird.
die geburtstage hatte ich mit $geburtstage_monatbit in die index.tpl eingefügt und in der index.php musst du nach #geburtstage suchen.
EDIT hab's hinbekommen. (:
Lila Raven
Guten Morgen
Ich wollte mal fragen ob man die Usernamen auch in Farbe anzeigen lassen kann? Ich benutze den Benutzeronlinemarkierung von Spitzi&Schrimm.. wenn das gehen würde, könnte mir bitte einer erklären wie ich das am besten anstelle???
LG und Danke schon mal Lila ^_^
Beckebans
Ich selbst habe den Hack bei mir nicht eingebaut, aber wenn du mir mal per PN deine Forendaten schickst, gucke ich mal direkt bei dir.
Lila Raven
Zitat: |
Der Posteingang von Benutzer »Beckebans« ist bereits voll. |
Ich schick dir die PN wenn du wieder welche empfangen kannst xD
und danke für deine Rückmeldung.. Lg Lila
Beckebans
Sollte wieder gehen.