Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=3)
-- Fragen zum WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=4)
--- Suche: Geburtstagsanzeige (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=1317)
Geschrieben von Listiger_Falke am 03.03.2011 um 17:16:
Suche: Geburtstagsanzeige
Hallöchen,
ich suche etwas, und zwar eine separate Anzeige, die mir auflistet, wann wer Geburtstag hat im Forum, und zwar immer beginnend mit dem aktuellen Datum
also z.B. Heutiges Datum 03.03.2011
User xxz 06.03.2011
User xxy 09-03.2011
User xxx 17.03.2011
Geschrieben von haumi am 03.03.2011 um 17:21:
Das sollte kein Problem sein.
Es ist nur die Frage ob alle ein Geburtstdatum angegeben haben.
Ich würde einen Button machen "Gebutrstage" und wenn man draufklickt wird eine Liste angezeigt.
ich mach mal was fertig
LG
haumi
Geschrieben von Listiger_Falke am 03.03.2011 um 17:31:
Es gibt nicht zu jedem User einen Geburtstag, da es kein Pflichtfeld ist. Ich denke da wäre es am besten diese Ausgaben zu unterdrücken. Eintrag in der DB für alle Nichtangaben ist ja 0000-00-00 bei den Geburtstagen. Eventuell lann man dieses Datum ja ausfiltern
Geschrieben von haumi am 03.03.2011 um 17:57:
hab ich schon gemacht.
Nur wird das Datum aber nach der Jahreszahl und nicht nach Monat und Tag sortiert.
Da muss ich noch einiges umformen-
Ich muss aber jetzt erst mal weg, schau aber ob ich das gleich noch hin bekomme.
So fädisch.
Ist zwar sehr spartanisch aber es funktioniert. siehe hier!
Klick mich!
Erstelle eine Datei z. B. geburtstag.php mit folgendem Inhalt:
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:
|
<?php
require("./global.php");
$geb = "SELECT username, birthday from bb1_users where birthday != '0000-00-00' ORDER BY birthday";
$tab = mysql_query($geb);
while($ds = mysql_fetch_object($tab)) {
$birthday = $ds->birthday;
$user = $ds->username;
$tag = substr($birthday,8,2);
$monat = substr($birthday,5,2);
$jahr = substr($birthday,0,4);
$array[] = $monat.". ".$tag.". ".$jahr." -- ".$user;
}
sort($array);
foreach ($array as $Element) {
$mon = substr($Element,0,2);
$tag = substr($Element,4,2);
$rest =substr($Element,7);
$element= $tag.". ".$mon.". ".$rest;
echo $element ."<br>";
}
?> |
|
Lege sie ins root-Verzeichnis (meist wbb2) und rufe sie im Browser auf.
deine Domain/wbb2/geburtstag.php
Es werden noch alle Geburtstage angezeigt.
Was wird gemacht?
Zuerst lese ich alle Mitglieder aus, die einen Geburtstag eingetragen haben.
Das Format des Geburtstages in mysql ist jjjj-mm-tt.
(Das " ORDER BY birthday" kann wegfallen aber es stand nun schon mal da.)
code: |
1:
2:
|
$geb = "SELECT username, birthday from bb1_users where birthday != '0000-00-00' ORDER BY birthday";
$tab = mysql_query($geb); |
|
Die Datensätze zerpflücke ich in tag, monat und jahr und schreibe sie in der Reihenfolge monat, tag,jahr,username in ein array, welches ich im nächsten Schritt sortiere.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
while($ds = mysql_fetch_object($tab)) {
$birthday = $ds->birthday;
$user = $ds->username;
$tag = substr($birthday,8,2);
$monat = substr($birthday,5,2);
$jahr = substr($birthday,0,4);
$array[] = $monat.". ".$tag.". ".$jahr." -- ".$user;
}
sort($array);
|
|
Dann zerpflücke ich die Datensätze wieder in tag, monat und rest und schreibe sie in eine Variable $element in Form von tag. monat. rest ein, wobei Rest gleich das Jahr und den Namen enthält.
code: |
1:
2:
3:
4:
5:
6:
7:
|
foreach ($array as $Element) {
$mon = substr($Element,0,2);
$tag = substr($Element,4,2);
$rest =substr($Element,7);
$element= $tag.". ".$mon.". ".$rest;
|
|
Mit echo gebe ich diese Datensätze der Reihe nach aus.
LG
haumi
Geschrieben von Listiger_Falke am 03.03.2011 um 21:11:
Hallo haumi,
erst einmal vielen Dank für die Mühe
2 Fragen aber noch dazu:
1. könnte man es auch so umsetzen, das erst eine Abfrage des aktuellen Datums erfolgt, und die Ausgabe dann nach dem aktuellen Datum.... also Heute 03.03., Ausgabe der Geburtstage dann mit Heute beginnend....
2. könnte man die Ausgabe in ein Template verlagern, um ggf. Header, Footer und eine Designanpassung an das Forum vornehmen zu können?
LG
Listiger_Falke
Geschrieben von haumi am 03.03.2011 um 21:14:
beides ist möglich. das Problem ist das Jahr, was an Anfang steht.
Man muss die Auswahl irgndwo zwischendurch machen.
ich schau mal wann ich das machen kann.
Wie bereitserwähnt ist hier Karneval und da bin ich doch mehr oder weniger OUT OF ORDER.
Es kommt aber-
LG
haumi
Geschrieben von Listiger_Falke am 03.03.2011 um 21:27:
O.k., es hat auch keine Eile
Ich wünsche Dir aber eine schöne närrische Zeit
Geschrieben von katze2ooo am 04.03.2011 um 11:34:
auch ein bischen getüftelt.
Wer den Hintergrund in den jeweilgen Style(s) haben will
mit einer Überschrift und einer Trennlinie am Anfang und Ende
sucht
require("./global.php");
füge darunter ein:
code: |
1:
2:
3:
4:
|
echo "$css";
echo '<font size="5"><hr>';
echo "Geburtstage der Mitglieder<hr>";
echo '</font>'; |
|
suche weiter
?>
füge darüber ein:
code: |
1:
2:
3:
4:
|
echo "$css";
echo '<font size="5"><hr>';
echo "Geburtstage der Mitglieder<hr>";
echo '</font>'; |
|
Im Designepack unter Hintergrund
kann man die Schriftfarbe anpassen.
Unter <font size="5"> 5 ist die Schriftgrösse der Überschrift.
Gruß katze2ooo
Geschrieben von haumi am 07.03.2011 um 18:37:
Hi Katze,
die echo-Befehle sollte man aus der php - Datei in ein Template auslagern.
Wer mal Testen möchte kann sich mal den Code in sein Board einbauen.
Angezeigt werden im Moment die Geburtstage des laufenden Monats.
Klick hier
die Restmonate folgen karnevalsbedingt etwas später.
Hier die beiden Templates und die phpdatei_
Template geburtstag:
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:
|
<?xml version="1.0" encoding="{$lang->items['LANG_GLOBAL_ENCODING']}"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{$lang->items['LANG_GLOBAL_DIRECTION']}" lang="{$lang->items['LANG_GLOBAL_LANGCODE']}" xml:lang="{$lang->items['LANG_GLOBAL_LANGCODE']}">
<head>
<title>$master_board_name | {$lang->items['LANG_GLOBAL_MEMBERSLIST']}</title>
$headinclude
</head>
<body>
$header
<table cellpadding="{$style['tableincellpadding']}" cellspacing="{$style['tableincellspacing']}" border="{$style['tableinborder']}" style="width:{$style['tableinwidth']}" class="tableinborder">
<tr>
<td class="tablea"><table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr class="tablea_fc">
<td align="left"><span class="smallfont"><b><a href="index.php{$SID_ARG_1ST}">$master_board_name</a> » Geburtstagsliste</b></span></td>
<td align="right"><span class="smallfont"><b>$usercbar</b></span></td>
</tr>
</table></td>
</tr>
</table><br />
$gebbit
$footer
</body>
</html> |
|
Template geb_bit:
code: |
1:
2:
3:
|
<ul>
$ausgabe
</ul> |
|
die Datel: geburtstag.php
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:
|
<?php
require("./global.php");
$aktuell = date("-m-");
echo $aktuell;
$geb = "SELECT username, birthday from bb1_users where birthday != '0000-00-00' AND birthday LIKE '%$aktuell%' ORDER BY birthday";
$tab = mysql_query($geb);
while($ds = mysql_fetch_object($tab)) {
$birthday = $ds->birthday;
$user = $ds->username;
$tag = substr($birthday,8,2);
$monat = substr($birthday,5,2);
$jahr = substr($birthday,0,4);
$array[] = $monat.". ".$tag.". ".$jahr." -- ".$user;
}
sort($array);
foreach ($array as $Element) {
$mon = substr($Element,0,2);
$tag = substr($Element,4,2);
$rest =substr($Element,7);
$element = $tag.". ".$mon.". ".$rest;
$ausgabe .= "<li>".$element."</li>";
eval("\$gebbit = "".$tpl->get("geb_bit")."";");
}
eval("\$gebbit = "".$tpl->get("geb_bit")."";");
eval("\$tpl->output("".$tpl->get("geburtstag")."");");
?>
|
|
Es kann gerne weiter entwickelt werden.
LG
haumi
Geschrieben von Listiger_Falke am 07.03.2011 um 19:34:
Ich habe das mal getestet, soweit ist es schon mal gut.
Aufgefallen ist mir noch, das eine zusätzliche Ausgabe einer -03- oben Rechts vorhanden ist .... ein Fehlercode?
Sinnvoll wäre es aber wenn man es so macht, auch die Geburtstage zumindest des nächsten Monats noch mit an zu zeigen, damit man nicht erst am 1. des Monats die Geburtstage des Monats sieht.
Geschrieben von haumi am 07.03.2011 um 19:47:
nee da habe ich mir das Ergebnis von $aktuell = date("-m-");
anzeigen lassen ob es auch meinen Vorstellungen entsprach.
Das echo $aktuell; kann man somit löschen und dann ist das -03- weg.
Der aktuelle Monat wurd somit auch immer automatisch angezeigt.
LG
haumi
Geschrieben von Listiger_Falke am 07.03.2011 um 20:01:
Da hätte ich auch selbst drauf kommen können
Geschrieben von haumi am 07.03.2011 um 20:18:
Den folgemonat bekommt man auch noch angezeigt, wenn man den farbig markierten Code hinzufügt:
Zitat: |
$aktuell = date("-m-");
$aktuell_n = date("-m-",mktime(0,0,0,date(m)+1,date(d),date(Y)));
$geb = "SELECT username, birthday from bb1_users where birthday != '0000-00-00' AND (birthday LIKE '%$aktuell%' OR birthday LIKE '%$aktuell_n%') ORDER BY birthday";w |
|
oder einfach die Zeilen austauscht:
code: |
1:
2:
3:
|
$aktuell = date("-m-");
$geb = "SELECT username, birthday from bb1_users where birthday != '0000-00-00' AND birthday LIKE '%$aktuell%' ORDER BY birthday"; |
|
code: |
1:
2:
3:
4:
|
$aktuell = date("-m-");
$aktuell_n = date("-m-",mktime(0,0,0,date(m)+1,date(d),date(Y)));
$geb = "SELECT username, birthday from bb1_users where birthday != '0000-00-00' AND (birthday LIKE '%$aktuell%' OR birthday LIKE '%$aktuell_n%') ORDER BY birthday";w |
|
siehe hier
das funktioniert auch im Dezember.
Nur wird da der Januar vor dem Dezember angezeigt, da nach Datum sortiert wird.
Mal sehen ob ich die beiden getrennt anzeigen kann.
Ist ja noch etwas Zeit bis Dezember.
LG
haumi
Geschrieben von katze2ooo am 07.03.2011 um 21:04:
Hi,
habe es bei mir im Board mit tpl und allen Geburtstagen.
Gibt es die Möglichkeit die sternzeichen und Avatare noch einzufügen?
Gruß katze2ooo
Geschrieben von haumi am 07.03.2011 um 21:11:
Ich denke schon.
Ich schau morgen mal nach.
LG
haumi
Geschrieben von Anje am 06.04.2022 um 20:05:
Hi, ist schon etwas älter das Thema aber könnte man den für php7.4 einbauen oder braucht man dafür einen extra Hack?
Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH