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 st8



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 st1

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 st12

Ich wünsche Dir aber eine schöne närrische Zeit st7



Geschrieben von katze2ooo am 04.03.2011 um 11:34:

 

st1
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> &raquo; 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. st12

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:

 

st8 Da hätte ich auch selbst drauf kommen können st4



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