"We are back" « oc.at

Countdown PHP-Script

TOM 13.11.2006 - 15:58 694 1
Posts

TOM

Elder
Oldschool OC.at'ler
Avatar
Registered: Nov 2000
Location: Vienna
Posts: 7425
Hi Leute

folgendes Anliegen.... ich habe hier ein Countdown PHP-Script welches wie folgt aussieht:

Code: PHP
<?php


// MACROS
define('DEBUG',false);
define('DEBUG_TIME',mktime(00,15,00,11,11,2006));

define('MESSAGE_TIME_START_WDAY','sunday'); // english weekday
define('MESSAGE_TIME_START_HOUR',11);		// hour of day
define('MESSAGE_TIME_PERIOD',4);			// hours

define('PAGE_TIMER','timer.html');
define('PAGE_MESSAGE','message.html');

// IMPLEMENTATION
//
// => Set timezone (PHP4)
// ..not implemented yet!

// => Set timezone (PHP5)
if (function_exists('date_default_timezone_set'))
	date_default_timezone_set('Europe/Vienna');

// *) Calculate timestamps
$nCurTime = DEBUG ? DEBUG_TIME : time();
$aCurTime = getdate($nCurTime);

$nStartTime = strtotime('next '.MESSAGE_TIME_START_WDAY) + MESSAGE_TIME_START_HOUR * 3600;
$aStartTime = getdate($nStartTime);

if ($nStartTime - $nCurTime > 7*24*3600-MESSAGE_TIME_PERIOD*3600)
{
	$nStartTime =  mktime(MESSAGE_TIME_START_HOUR,0,0,$aCurTime['mon'],$aCurTime['mday'],$aCurTime['year']);

	if ($aCurTime['wday'] > $aStartTime['wday'])
	// => quick fix for overlapping time in period 1
		$nStartTime -= 86400;

	if ($nCurTime > $nStartTime + MESSAGE_TIME_PERIOD * 3600)
	// => quick fix for overlapping time in period 2
		$nStartTime = strtotime('next '.MESSAGE_TIME_START_WDAY) + MESSAGE_TIME_START_HOUR * 3600;
}

$aStartTime = getdate($nStartTime);

// *) Message fork
$bShowTimer = $nCurTime < $nStartTime;

// *) Show output page
$szPage = $bShowTimer ? PAGE_TIMER : PAGE_MESSAGE;

$szContent = file_get_contents($szPage);
if ($szContent === false)
	die("Error: Could not load output page [$szPage]");

// -) Set no-cache headers
header("Cache-Control: no-cache, must-revalidate");	// HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");	// date in the past

// -) Replace current timebase
if ($bShowTimer)
{
	// -) Find current timebase
	$nDiffTime = $nStartTime - $nCurTime;

	$nDays = (int) ($nDiffTime / 86400);
	$nDiffTime -= $nDays * 86400;

	$nHours = (int) ($nDiffTime / 3600);
	$nDiffTime -= $nHours * 3600;

	$nMins = (int) ($nDiffTime / 60);
	$nDiffTime -= $nMins * 60;

	$nSecs	= $nDiffTime;

	$szContent =  str_replace(array('[DAYS]','[HOURS]','[MINS]','[SECS]'),array($nDays,$nHours,$nMins,$nSecs),$szContent);
}

echo $szContent;

?>

was es machen soll.... es zählt einen Countdown bis jeden Sonntag um 11 Uhr (Früh) runter, zeigt dann für vier Stunden eine Message und startet wieder den Countdown bis zum nächsten Sonntag 11 Uhr.

Der Countdown funktioniert, die Message Einblendung funktioniert auch.... nur zeigt er die Message wesentlich länger als 4 Stunden an... wo liegt der Fehler?

tia

TOM
Bearbeitet von TOM am 13.11.2006, 18:17

TOM

Elder
Oldschool OC.at'ler
Avatar
Registered: Nov 2000
Location: Vienna
Posts: 7425
hat sich inzwischen erledigt.... thx mat ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz