Ganz einfacher Countdown mit php Quelle

Hallo, danke erstmal für die Hilfe. aber wie es so oft ist habe ich nun ein neues Problem.

Wenn ich es so mache (testseite)

PHP:
<?php
$zeit1 = 74201;
$zeit2 = 65;
$zeit3 = 3620;
$zeit4 = 178;

?>
<script type="text/javascript">
// Timerobjekt mit PHP initialisiert
var objTimer = {
        'countdownID_01': {
            lngSekunden: <?php echo $zeit1; ?>
        },
        'countdownID_02': {
            lngSekunden: <?php echo $zeit2; ?>
        },
		'countdownID_03': {
            lngSekunden: <?php echo $zeit3; ?>
        },
		'countdownID_04': {
            lngSekunden: <?php echo $zeit4; ?>
        }
    };
 
function secondCount(id){
    var lngSekunden = objTimer[id].lngSekunden,
        intStunden, lngHelpSekunden, intMinuten, intSekunden, strZeit;
 
    // Stunden berechnen
    intStunden = Math.floor(lngSekunden/(60*60));
    // Stunden formatieren
    intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
    // Restsekunden berechnen
    lngHelpSekunden = lngSekunden - intStunden*60*60;
 
    // Minuten berechnen, formatieren und Restsekunden berechnen
    intMinuten = Math.floor(lngHelpSekunden/60);
    intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
    intSekunden = lngHelpSekunden - intMinuten*60;
 
    // Sekunden formatieren
    intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;
 
    // Ausgabestring generieren
    strZeit = intStunden + ":" + intMinuten + ":" + intSekunden;
 
    // Ausgabestring in DIV mit der übergebenen ID schreiben
    document.getElementById(id).innerHTML = strZeit;
 
    // Sekunden dekrementieren
    objTimer[id].lngSekunden = --lngSekunden;
    // Falls der Countdown noch nicht zurückgezählt ist
    if(lngSekunden >= 0){
        // Countdown-Funktion erneut aufrufen
        window.setTimeout(function(){
            secondCount(id)
        }, 1000);
    }
 
}
 
window.onload = function(){
    secondCount('countdownID_01');
    secondCount('countdownID_02');
	secondCount('countdownID_03');
	secondCount('countdownID_04');
}
</script>

<?php
echo ' <div id="countdownID_01"></div>
	 <div id="countdownID_02"></div>
	 <div id="countdownID_03"></div>
	 <div id="countdownID_04"></div>';
?>

funktioniert es auch.

Doch wenn ich es versuche in meiner Seite einzubauen dann geht es nun nur wenn ich einen "ausbauen" link drücke sonst wird keine Zeit angezeigt.

Hier nochmal mein .php in der alles abläuft
diese .php wird in der index per if get includet und ich habe auch schon versucht das JS in headbereich der index,php zu legen allerdings zeigt er dann statt eine Zeit "NaN:NaN:NaN" denke mal weil die Variable da ja noch nicht gefüllt ist.
Also alles zusammen gesehen muss ich denke ich nur noch an der richtigen Stelle das JS haben oder? Verliere leider abundzu noch den überblick in meinen Code wenn es zuviel wird.


PHP:
<?php
	$ee = mysql_query("SELECT userid, aktion, timestamp FROM aktionen WHERE userid = ".$userid."")
	or DIE ("MySQL-Fehler 9: " . mysql_error());
	while($ww = mysql_fetch_object($ee))
	{
	if($ww->aktion == "Traingsanlage")	{$imbau1 = 1; $imbau1_bauzeitende = $ww->timestamp;	$imbau1_fertigin = $ww->timestamp - time();}else{}
	if($ww->aktion == "Stadion")		{$imbau2 = 1; $imbau2_bauzeitende = $ww->timestamp;	$imbau2_fertigin = $ww->timestamp - time();}else{}
	}
	

	if(($_GET["ausbauen"]) == 1 or $_GET["ausbauen"] == 2)
	{
		if($_GET["ausbauen"] == 1 AND (!$imbau1) AND ($tr_an < 15))
		{$ausbau = 'Traingsanlage';
			// 1 Tag = 86400 Sekunden // 1 Stunde = 3600 Sekunden
				if($tr_an == 0)	  {$ausbauzeit = 10;}
			elseif($tr_an == 1)	  {$ausbauzeit = 10;}
			elseif($tr_an == 2)	  {$ausbauzeit = 10;}
			elseif($tr_an == 3)	  {$ausbauzeit = 10;}
			elseif($tr_an == 4)	  {$ausbauzeit = 10;}
			elseif($tr_an == 5)	  {$ausbauzeit = 10;}
			elseif($tr_an == 6)	  {$ausbauzeit = 10;}
			elseif($tr_an == 7)	  {$ausbauzeit = 10;}
			elseif($tr_an == 8)	  {$ausbauzeit = 10;}
			elseif($tr_an == 9)	  {$ausbauzeit = 10;}
			elseif($tr_an == 10)  {$ausbauzeit = 10;}
			elseif($tr_an == 11)  {$ausbauzeit = 10;}
			elseif($tr_an == 12)  {$ausbauzeit = 10;}
			elseif($tr_an == 13)  {$ausbauzeit = 10;}
			elseif($tr_an == 14)  {$ausbauzeit = 10;}
			else{}
		}
		
		if($_GET["ausbauen"] == 2 AND (!$imbau2) AND ($stadion < 15))
		{$ausbau = 'Stadion';
			// 1 Tag = 86400 Sekunden // 1 Stunde = 3600 Sekunden
				if($stadion == 0)	  {$ausbauzeit = 10;}
			elseif($stadion == 1)	  {$ausbauzeit = 10;}
			elseif($stadion == 2)	  {$ausbauzeit = 10;}
			elseif($stadion == 3)	  {$ausbauzeit = 10;}
			elseif($stadion == 4)	  {$ausbauzeit = 10;}
			elseif($stadion == 5)	  {$ausbauzeit = 10;}
			elseif($stadion == 6)	  {$ausbauzeit = 10;}
			elseif($stadion == 7)	  {$ausbauzeit = 10;}
			elseif($stadion == 8)	  {$ausbauzeit = 10;}
			elseif($stadion == 9)	  {$ausbauzeit = 10;}
			elseif($stadion == 10)    {$ausbauzeit = 10;}
			elseif($stadion == 11)    {$ausbauzeit = 10;}
			elseif($stadion == 12)    {$ausbauzeit = 10;}
			elseif($stadion == 13)    {$ausbauzeit = 10;}
			elseif($stadion == 14)    {$ausbauzeit = 10;}
			else{}
		}

		if($ausbau)
		{
		mysql_query("INSERT INTO aktionen SET  	userid = '".$userid."', 
												aktion = '".$ausbau."', 
												timestamp = '".(time() + $ausbauzeit)."'
					") or DIE ("MySQL-10: " . mysql_error());
					
			if($ausbau == "Traingsanlage")	{$imbau1 = 1;$imbau1_fertigin = $ausbauzeit;}else{}
			if($ausbau == "Stadion")		{$imbau2 = 1;$imbau2_fertigin = $ausbauzeit;}else{}
					
        }
		else
		{
		}		
				
	}
	else
	{
	}
	
	
	echo '
	
	<script type="text/javascript">
// Timerobjekt mit PHP initialisiert
var objTimer = {
        "countdownID_01": {
            lngSekunden: '.$imbau1_fertigin.'
        },
        "countdownID_02": {
            lngSekunden: '.$imbau2_fertigin.'
        }
    };
 
function secondCount(id){
    var lngSekunden = objTimer[id].lngSekunden,
        intStunden, lngHelpSekunden, intMinuten, intSekunden, strZeit;
 
    // Stunden berechnen
    intStunden = Math.floor(lngSekunden/(60*60));
    // Stunden formatieren
    intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
    // Restsekunden berechnen
    lngHelpSekunden = lngSekunden - intStunden*60*60;
 
    // Minuten berechnen, formatieren und Restsekunden berechnen
    intMinuten = Math.floor(lngHelpSekunden/60);
    intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
    intSekunden = lngHelpSekunden - intMinuten*60;
 
    // Sekunden formatieren
    intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;
 
    // Ausgabestring generieren
    strZeit = intStunden + ":" + intMinuten + ":" + intSekunden;
 
    // Ausgabestring in DIV mit der übergebenen ID schreiben
    document.getElementById(id).innerHTML = strZeit;
 
    // Sekunden dekrementieren
    objTimer[id].lngSekunden = --lngSekunden;
    // Falls der Countdown noch nicht zurückgezählt ist
    if(lngSekunden >= 0){
        // Countdown-Funktion erneut aufrufen
        window.setTimeout(function(){
            secondCount(id)
        }, 1000);
    }
 
}
 
window.onload = function(){
    secondCount("countdownID_01");
    secondCount("countdownID_02");
}
</script>
	
	';
	
	echo "Trainingsanlage : ";
	if($tr_an){echo $tr_an;}
	else{echo "Keine ";}
	if($tr_an == 15){echo " h&ouml;chste Stufe erreicht!<br />";}else{
		if(!$imbau1){echo ' <a href="index.php?do=anlagen&ausbauen=1">ausbauen</a><br />';}
		else{echo " ausbau auf Stufe ".($tr_an + 1)." fertig in <div id='countdownID_01'></div><br />";}
	}
	
	echo "Stadion : ";
	if($stadion){echo $stadion;}
	else{echo "Keines ";}
	if($stadion == 15){echo " h&ouml;chste Stufe erreicht!<br />";}else{
		if(!$imbau2){echo ' <a href="index.php?do=anlagen&ausbauen=2">ausbauen</a><br />';}
		else{echo " ausbau auf Stufe ".($stadion + 1)." fertig in <div id='countdownID_02'></div><br />";}
	}

?>


EDIT: Habe den fehler nun gefunden wenn nur eine Stufe gerade ausgebaut wird und die andere nicht dann ist natürlich auch nur eine Variable gefüllt und deswegen zeigt er nix an.
 
Zuletzt bearbeitet:
Zurück