Ok... Dieser Thread bezieht sich auf den vorhergehenden Monster Thread (http://www.php-resource.de/forum/showthread.php?threadid=3241)
Das Problem ist folgendes: Ich habe mit Hilfe von euch einen Geburtstagskallender gebastelt, dessen source ich mal hinten anhänge.
Die URL zum anschauen des ganzen, um sich ein Bild zu machen ist folgende: http://www.abi01.de/hgr
Der Kalender funktioniert soweit einwandfrei, es gibt nur zwei Ausnahmefälle, die ich gerne noch hinkriegen würde:
1. wenn zwei / bzw. max 3 Leute am gleichen Tag geburtstag haben, sollen diese Leute am Tag des Geburtstags nur in der Mitte angezeigt werden, also nicht in der Liste: "Als letztes hatten Geburtstag" --> Siehe testpersonen auf der url.
2. wenn zwei/ max 3 Leute am gleichen Tag geburtstag haben, wird nur die erste person angzeigt unter: Heute hat geburtstag...
wer kann mir weiter helfen????
Hier der COde...
danke schon mal im Vorraus:
---------------------------------
<?php
$heutejahr = date("Y",time());
$heute = date("d.m.Y",time());
$timerer = date("m",time());
$timererer = date("d",time());
$timestamp = mktime(0,0,0,$timerer,$timererer,$heutejahr);
$conn = mysql_connect("mysql.domainfactory.de", "...", "...");
if ($conn)
{
mysql_select_db("...",$conn);
$result = mysql_query("SELECT name, tag FROM jahrgangsstufe",$conn);
$doedel=1;
$anzahl=1;
while($zeileholen=mysql_fetch_array($result,$conn))
{
$schueler[$anzahl]["name"] = $zeileholen["name"];
$schueler[$anzahl]["tag"] = $zeileholen["tag"];
$anzahl++;
$doedel++;
}
$anzahl--;
for ($i=1;$i<=$anzahl;$i++)
{
$datum = explode ("-",$schueler[$i]["tag"]); //splittet das Datum auf, wir brauchen nur tag und Monat
$schueler[$i]["timestamp"] = mktime(0,0,0,$datum[1],$datum[2],$heutejahr); // jeder bekommt ein timestamp in diesem Jahr
}
for ($i=1;$i<=$anzahl;$i++)
{
$schueler[$i]["abgerechnet"] = $timestamp - $schueler[$i]["timestamp"]; // jetzt wird heute abgezogen
}
// so jetzt haben wir schonmal eine Liste , jetzt muss sie sortiert werden.
// zuerst die postiven Absteigend, dann die negativen vom kleinsten an.
// denn ddas geht dann ja von 31.12. runter auf heute.
$positiv = 0;
$negativ = 0;
$heute = 0;
for ($i=1;$i<=$anzahl;$i++)
{
if ( $schueler[$i]["abgerechnet"] > 0)
{
$positiv++;
}
if ( $schueler[$i]["abgerechnet"] < 0)
{
$negativ++;
}
}
$dieshierzaehlt = 0;
for ($i=1;$i<=$anzahl;$i++)
{
if ($schueler[$i]["abgerechnet"] == 0)
{
$reihenfolge[$dieshierzaehlt]["name"] = $schueler[$i]["name"];
$reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$i]["timestamp"];
$dieshierzaehlt++;
}
}
for ($i=1;$i<=$positiv;$i++)
{
$momstand = 1000*24*60*60; // 1000 Tage gibt es nicht
$aktuell = 0;
for($n=1;$n<=$anzahl;$n++)
{
if ($schueler[$n]["abgerechnet"] > 0)
{
if ($schueler[$n]["abgerechnet"] < $momstand) // wir suchen den kleinsten Abstand zu heute
{
$momstand = $schueler[$n]["abgerechnet"];
$aktuell = $n;
}
}
}
$reihenfolge[$dieshierzaehlt]["name"] = $schueler[$aktuell]["name"];
$reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"];
$dieshierzaehlt++;
$schueler[$aktuell]["abgerechnet"] = 0;
}
for ($i=1;$i<=$negativ;$i++)
{
$momstand = 0; // 1000 Tage gibt es nicht
$aktuell = 0;
for($n=1;$n<=$anzahl;$n++)
{
if ($schueler[$n]["abgerechnet"] < 0)
{
if ($schueler[$n]["abgerechnet"] < $momstand) // wir suchen die kleinste Zahl
{
$momstand = $schueler[$n]["abgerechnet"];
$aktuell = $n;
}
}
}
$reihenfolge[$dieshierzaehlt]["name"] = $schueler[$aktuell]["name"];
$reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"];
$dieshierzaehlt++;
$schueler[$aktuell]["abgerechnet"] = 0;
}
echo"<B><U>Als letztes hatten Geburtstag:</U></B><BR><BR>";
for($i=0;$i<=2;$i++) // gibt die ersten drei aus, ist variabel !
{
echo $reihenfolge[$i]["name"]. " am <B>".date("d.M.Y",$reihenfolge[$i]["timestamp"])."</B><br>";
}
echo"<HR SIZE=\"1\">";
$heute_geburtstag = mysql_query("SELECT name FROM jahrgangsstufe WHERE DAYOFYEAR(tag)=DAYOFYEAR(NOW())");
while($row = mysql_fetch_array($heute_geburtstag))
{ $geburtstagskind = $row[0]; }
if (!$geburtstagskind)
{
echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y"); echo "</B> feiert niemand aus unserer Jahrgangsstufe Geburtstag. <BR></FONT>";
echo "<HR SIZE=\"1\">";
}
else{
echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y"); echo "</B> feiert $geburtstagskind Geburtstag. [<B>HAPPY BIRTHDADY!</B>] <BR></FONT>";
echo "<HR SIZE=\"1\">";}
echo"<B><U>Als nächstes haben Geburtstag:</U></B><BR><BR>";
for($i=$anzahl-1;$i>=$anzahl-3;$i--) // gibt die letzten drei aus, ist variabel !
{
echo $reihenfolge[$i]["name"]." am <B>";
echo date("d.M.Y",$reihenfolge[$i]["timestamp"])."</B><br>";
}
}
?>
---------------------------------
Das Problem ist folgendes: Ich habe mit Hilfe von euch einen Geburtstagskallender gebastelt, dessen source ich mal hinten anhänge.
Die URL zum anschauen des ganzen, um sich ein Bild zu machen ist folgende: http://www.abi01.de/hgr
Der Kalender funktioniert soweit einwandfrei, es gibt nur zwei Ausnahmefälle, die ich gerne noch hinkriegen würde:
1. wenn zwei / bzw. max 3 Leute am gleichen Tag geburtstag haben, sollen diese Leute am Tag des Geburtstags nur in der Mitte angezeigt werden, also nicht in der Liste: "Als letztes hatten Geburtstag" --> Siehe testpersonen auf der url.
2. wenn zwei/ max 3 Leute am gleichen Tag geburtstag haben, wird nur die erste person angzeigt unter: Heute hat geburtstag...
wer kann mir weiter helfen????
Hier der COde...
danke schon mal im Vorraus:
---------------------------------
<?php
$heutejahr = date("Y",time());
$heute = date("d.m.Y",time());
$timerer = date("m",time());
$timererer = date("d",time());
$timestamp = mktime(0,0,0,$timerer,$timererer,$heutejahr);
$conn = mysql_connect("mysql.domainfactory.de", "...", "...");
if ($conn)
{
mysql_select_db("...",$conn);
$result = mysql_query("SELECT name, tag FROM jahrgangsstufe",$conn);
$doedel=1;
$anzahl=1;
while($zeileholen=mysql_fetch_array($result,$conn))
{
$schueler[$anzahl]["name"] = $zeileholen["name"];
$schueler[$anzahl]["tag"] = $zeileholen["tag"];
$anzahl++;
$doedel++;
}
$anzahl--;
for ($i=1;$i<=$anzahl;$i++)
{
$datum = explode ("-",$schueler[$i]["tag"]); //splittet das Datum auf, wir brauchen nur tag und Monat
$schueler[$i]["timestamp"] = mktime(0,0,0,$datum[1],$datum[2],$heutejahr); // jeder bekommt ein timestamp in diesem Jahr
}
for ($i=1;$i<=$anzahl;$i++)
{
$schueler[$i]["abgerechnet"] = $timestamp - $schueler[$i]["timestamp"]; // jetzt wird heute abgezogen
}
// so jetzt haben wir schonmal eine Liste , jetzt muss sie sortiert werden.
// zuerst die postiven Absteigend, dann die negativen vom kleinsten an.
// denn ddas geht dann ja von 31.12. runter auf heute.
$positiv = 0;
$negativ = 0;
$heute = 0;
for ($i=1;$i<=$anzahl;$i++)
{
if ( $schueler[$i]["abgerechnet"] > 0)
{
$positiv++;
}
if ( $schueler[$i]["abgerechnet"] < 0)
{
$negativ++;
}
}
$dieshierzaehlt = 0;
for ($i=1;$i<=$anzahl;$i++)
{
if ($schueler[$i]["abgerechnet"] == 0)
{
$reihenfolge[$dieshierzaehlt]["name"] = $schueler[$i]["name"];
$reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$i]["timestamp"];
$dieshierzaehlt++;
}
}
for ($i=1;$i<=$positiv;$i++)
{
$momstand = 1000*24*60*60; // 1000 Tage gibt es nicht
$aktuell = 0;
for($n=1;$n<=$anzahl;$n++)
{
if ($schueler[$n]["abgerechnet"] > 0)
{
if ($schueler[$n]["abgerechnet"] < $momstand) // wir suchen den kleinsten Abstand zu heute
{
$momstand = $schueler[$n]["abgerechnet"];
$aktuell = $n;
}
}
}
$reihenfolge[$dieshierzaehlt]["name"] = $schueler[$aktuell]["name"];
$reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"];
$dieshierzaehlt++;
$schueler[$aktuell]["abgerechnet"] = 0;
}
for ($i=1;$i<=$negativ;$i++)
{
$momstand = 0; // 1000 Tage gibt es nicht
$aktuell = 0;
for($n=1;$n<=$anzahl;$n++)
{
if ($schueler[$n]["abgerechnet"] < 0)
{
if ($schueler[$n]["abgerechnet"] < $momstand) // wir suchen die kleinste Zahl
{
$momstand = $schueler[$n]["abgerechnet"];
$aktuell = $n;
}
}
}
$reihenfolge[$dieshierzaehlt]["name"] = $schueler[$aktuell]["name"];
$reihenfolge[$dieshierzaehlt]["timestamp"] = $schueler[$aktuell]["timestamp"];
$dieshierzaehlt++;
$schueler[$aktuell]["abgerechnet"] = 0;
}
echo"<B><U>Als letztes hatten Geburtstag:</U></B><BR><BR>";
for($i=0;$i<=2;$i++) // gibt die ersten drei aus, ist variabel !
{
echo $reihenfolge[$i]["name"]. " am <B>".date("d.M.Y",$reihenfolge[$i]["timestamp"])."</B><br>";
}
echo"<HR SIZE=\"1\">";
$heute_geburtstag = mysql_query("SELECT name FROM jahrgangsstufe WHERE DAYOFYEAR(tag)=DAYOFYEAR(NOW())");
while($row = mysql_fetch_array($heute_geburtstag))
{ $geburtstagskind = $row[0]; }
if (!$geburtstagskind)
{
echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y"); echo "</B> feiert niemand aus unserer Jahrgangsstufe Geburtstag. <BR></FONT>";
echo "<HR SIZE=\"1\">";
}
else{
echo "<FONT COLOR=\"FF0000\">Heute, am <B>"; echo date("d.m.y"); echo "</B> feiert $geburtstagskind Geburtstag. [<B>HAPPY BIRTHDADY!</B>] <BR></FONT>";
echo "<HR SIZE=\"1\">";}
echo"<B><U>Als nächstes haben Geburtstag:</U></B><BR><BR>";
for($i=$anzahl-1;$i>=$anzahl-3;$i--) // gibt die letzten drei aus, ist variabel !
{
echo $reihenfolge[$i]["name"]." am <B>";
echo date("d.M.Y",$reihenfolge[$i]["timestamp"])."</B><br>";
}
}
?>
---------------------------------