Countdown für Browsergame

StarboyCelli

Grünschnabel
Hi Leute, ich arbeite zur Zeit an einem Browsergame und versuche
für die erstellung von einheiten die Zeit bis zur Fertigstellung der nächsten
Einheit in echtzeit anzeigen lassen..

Benutze dieses Javascript dafür

Code:
<script type="text/javascript">
var CountdownJahr = 0;
var CountdownMonat = 0;
var CountdownTag = 0;
var CountdownStunde = 0;
var CountdownMinute = 0;
var CountdownSekunde = 0;

function CountdownAnzeigen()
{
    var Jetzt = new Date();
    var Countdown = new Date(CountdownJahr, CountdownMonat-1, CountdownTag, CountdownStunde, CountdownMinute, CountdownSekunde);
    var MillisekundenBisCountdown = Countdown.getTime()-Jetzt.getTime();
    var Rest = Math.floor(MillisekundenBisCountdown/1000);
    var CountdownText = "";

    if(Rest >= 31536000)
    {
        var Jahre = Math.floor(Rest/31536000);
        Rest = Rest-Jahre*31536000;

        if(Jahre > 1 || Jahre == 0)
        {
            CountdownText += Jahre + " Jahre ";
        }
        else if(Jahre == 1)
        {
            CountdownText += Jahre + " Jahr ";
        }
    }
    if(Rest >= 86400)
    {
        var Tage = Math.floor(Rest/86400);
        Rest = Rest-Tage*86400;

        if(Tage > 1 || Tage == 0)
        {
            CountdownText += Tage + " Tage ";
        }
        else if(Tage == 1)
        {
            CountdownText += Tage + " Tag ";
        }
    }
    if(Rest >= 3600)
    {
        var Stunden = Math.floor(Rest/3600);
        Rest = Rest-Stunden*3600;

        if(Stunden > 1 || Stunden == 0)
        {
            CountdownText += Stunden + " Stunden ";
        }
        else if(Stunden == 1)
        {
            CountdownText += Stunden + " Stunde ";
        }
    }
    if(Rest >= 60)
    {
        var Minuten = Math.floor(Rest/60);
        Rest = Rest-Minuten*60;

        if(Minuten > 1 || Minuten == 0)
        {
            CountdownText += Minuten + " Minuten ";
        }
        else if(Minuten == 1)
        {
            CountdownText += Minuten + " Minute ";
        }
    }

    if(Rest > 1 || Rest == 0)
    {
        CountdownText += Rest + " Sekunden ";
    }
    else if(Rest==1)
    {
        CountdownText += Rest + " Sekunde ";
    }

    document.getElementById('Countdown').innerHTML = CountdownText;
    window.setTimeout("CountdownAnzeigen()", 1000);
}
</script>

Jetzt müsste ich aber dort wo CountdownJahr usw steht die einzelnen Daten des Fertigstellungsdatums aus der Datenbank für diese Einheit einsetzen mit PHP aber ich kriege es leider nicht hin das Datum aus der Datenbank zu "splitten" in Jahr,Monat,Tag,Stunde,Minute,Sekunde

Gespeichert wird das Datum so

2009-06-28 00:39:24

Hab schon versucht das mit verschiedensten Funktionen auseinander zubekommen aber es klappt einfach nicht....

Wäre echt super wenn mir da irgendwer helfen könnte...

und vielen Dank im vorraus

LG Marcel
 
das ganze mit strtotime() in einen Timestamp umwandeln und hinterher mit date() so formatieren (splitten) wie du es brauchst.
 
PHP:
$sql_nextunit = "SELECT * FROM game_player_einheiten WHERE userid = '$uid' AND fertig < '".date("Y-m-d H:i:s")."' ORDER BY fertig DESC LIMIT 1";
$result_nextunit = mysql_query($sql_nextunit, $conn) or die(mysql_error());
$nextunit = mysql_fetch_array($result_nextunit);

$string = $nextunit["fertig"];

LINE 105: $fertigdate = strtotime($string, "\n");

Warning: strtotime() expects parameter 2 to be long, string given in createunit.php on line 105

Kommt nun wenn ich versuche es so mache...

PS: Aber danke erstmal für die schnelle Antwort :)
 
Hi,

strtotime() erwartet als zweiten Parameter einen integer-Wert, so wie auch im Handbuch beschrieben.

In deinem Fall wird hier garkein zweiter Parameter benötigt. Oder was genau versuchst du mit "\n" zu erreichen?
 
Ist leider das erste mal das ich mit Zeit Funktionen arbeite und ich habe gedacht das der zweite Parameter erforderlich ist....

Habe es nun entfernt, jetzt ist zwar der Fehler weg... mal schauen wie ich nun weiter komme...
 
Du könntest getdate() verwenden um dein Datum zu splitten:
PHP:
$split = getdate(strtotime($nextunit['fertig']));

Ein var_dump() auf $split zeigt dir dann wie du auf die Werte zugreifen kannst. Die Sekunden stehen zum Beispiel in
PHP:
$split['seconds']
 
Zurück