TOM
Super ModeratorOldschool OC.at'ler
|
Hi Leute Bräuchte kurz jemanden mit PHP/Javascript-Skills Habe ein php-skript + javascript (schon lange im einsatz) welches im Prinzip nicht mehr macht als einen Countdown bis zu einem fixen Zeitpunkt (derzeit eingestellt auf Sonntag 1300) zählt und dann eine bestimmte message anzeigt... das besteht derzeit aus drei files => wär jemand so nett mir das in ein php skript zu mergen (oder auch javascript)? Brauche eine all-in-one Lösung dafür... countdown.php <?php
// MACROS
define('DEBUG',false);
define('DEBUG_TIME',mktime(12,0,15,11,19,2006));
define('MESSAGE_TIME_START_WDAY','sunday'); // english weekday
define('MESSAGE_TIME_START_HOUR',13); // 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 + MESSAGE_TIME_PERIOD*3600 < $nCurTime)
{
$nStartTime = strtotime('next '.MESSAGE_TIME_START_WDAY,$nStartTime + 86400) + MESSAGE_TIME_START_HOUR * 3600;
$aStartTime = getdate($nStartTime);
}
else
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;
?>
timer.html <script type="text/javascript">
<!--
var nTimerID = 0;
var nDays = [DAYS],
nHours = [HOURS],
nMins = [MINS],
nSecs = [SECS];
function updateHTML()
{
var oTimerDays = document.getElementById('idTimerDays'),
oTimerHMS = document.getElementById('idTimerHMS');
if (!oTimerDays || !oTimerHMS)
{
alert('Error: Timer object(s) not found!');
return false;
}
if(nDays == 1) {
oTimerDays.innerHTML = nDays + ' Tag';
} else {
oTimerDays.innerHTML = nDays + ' Tage';
}
if(nHours == 1) {
if(nMins ==1) {
oTimerHMS.innerHTML = nHours + ' Stunde ' + nMins + ' Minute';
} else {
oTimerHMS.innerHTML = nHours + ' Stunde ' + nMins + ' Minuten';
}
} else {
if(nMins ==1) {
oTimerHMS.innerHTML = nHours + ' Stunden ' + nMins + ' Minute';
} else {
oTimerHMS.innerHTML = nHours + ' Stunden ' + nMins + ' Minuten';
}
}
return true;
}
function updateTimer()
{
// *) Update timer variables
if (--nSecs == -1)
{
if (--nMins == -1)
{
nMins = 59;
if (--nHours == -1)
{
if (--nDays == -1)
{
// => reload timer page.. countdown finished
window.location.reload();
return;
}
nHours = 23;
}
}
nSecs = 59;
}
// *) Update html nodes
if (!updateHTML())
return;
// *) Invoke timer again
nTimerID = setTimeout("updateTimer()",1000);
}
function initTimer()
{
if (!updateHTML())
return false;
nTimerID = setTimeout("updateTimer()",1000);
return true;
}
//-->
</script>
<body onload="initTimer()" style="margin: 0px; padding: 0px; text-align: center">
Forum-Meeting Countdown:
<p><a href="http://www.parkour-vienna.at/forum_meeting_informationen.html" target="_parent"><span id="idTimerDays"></span></p>
<p><a href="http://www.parkour-vienna.at/forum_meeting_informationen.html" target="_parent"><span id="idTimerHMS"></span></a></p>
</body>
message.html <body style="margin: 0px; padding: 0px; text-align: center">
<p><a href="http://www.parkour-vienna.at/forum_meeting_informationen.html" target="_parent">Forum-Meeting</a></p>
<p><a href="http://www.parkour-vienna.at/forum_meeting_informationen.html" target="_parent">findet gerade</a></p>
<p><a href="http://www.parkour-vienna.at/forum_meeting_informationen.html" target="_parent">statt</a></p>
</body>
PS: Oder falls ihr was simpleres in php/JS dafür habt, bin ich auch dafür zu haben... das ganze hier hat sich nur bereits bewährt PPS: Das Ganze muss nur auf Minute genau sein, kein aktiver Sekunden-Counter tia!
|
-=Willi=-
The Emperor protects
|
|
TOM
Super ModeratorOldschool OC.at'ler
|
http://www.ricocheting.com/code/jav...countdown-timer
Bei den Stellen dateFuture1 = new Date(2012,3,13,22,32,59); und dateNow = new Date(); vom generierten könnte man dann mit PHP einsteigen. Dieser Countdown ist aber für ein Event, mein Countdown ist wiederkehrend.... jeden Sonntag 1300 Uhr, dann wird eine Zeit lang eine Message angezeigt und dann startet der Countdown wieder bis zum nächsten Sonntag 1300...
|
mat
AdministratorLegends never die
|
Aus welchem Grund willst du die Sachen überhaupt mergen? Wo soll es integriert werden? Ich habe das Gefühl, dass hier das Konzept einfach überdacht werden muss. Am Code wird es nicht liegen (der ist auch von mir!!11), weil du brauchst eigentlich immer einen PHP und JS-Teil bei so einer Aufgabe. Natürlich kann man das Javascript in den PHP-Code einschleusen, aber dafür müssen man wissen, wo es integriert werden soll.
|
TOM
Super ModeratorOldschool OC.at'ler
|
soll im endeffekt in einen sidebar-block eines forums, wo ich die wahl zwischen zwei modi hab:
1.) RAW HTML/JS If enabled, NO PARSING will occur. Good if you want to show html/javascript only, such as an embeded widget or a banner.
2.) PHP mode If enabled, and above Raw Mode is disabled, entire block contents needs to be in PHP. You need to return the html to be displayed, and do not use echo, print, etc. And do not use open/closing php tags.
wär somit praktischer das alles in einem skript zu haben, anstatt mit mehreren files am webspace
|
mat
AdministratorLegends never die
|
Dann ist es eh leicht. Du brauchst den PHP mode und musst die countdown.php als Javascript-File einbinden. Natürlich entsprechend umgestaltet. Die Einbindung des Skript-Files erfolgt als Rückgabe für diesen Block (scheinbar als zusammengebastelter PHP-String) per script-Tag. Drunter musst du dann den HTML-Code vom Timer reingeben, ohne Body-Tag natürlich.
|
TOM
Super ModeratorOldschool OC.at'ler
|
Dann ist es eh leicht... Natürlich entsprechend umgestaltet. genau deswegen habe ich gehofft, dass mir das jemand schnell machen kann
|
TOM
Super ModeratorOldschool OC.at'ler
|
keiner zeit dafür?
|
mat
AdministratorLegends never die
|
Wenn du dich selber darum kümmerst, dann wärst du nicht mehr auf die Hilfe anderer angewiesen. Ist nicht bös gemeint, aber das Grundproblem ist, dass die Erstversion schon nicht von dir ist.
|
TOM
Super ModeratorOldschool OC.at'ler
|
Wenn du dich selber darum kümmerst, dann wärst du nicht mehr auf die Hilfe anderer angewiesen. Ist nicht bös gemeint, aber das Grundproblem ist, dass die Erstversion schon nicht von dir ist. Das Grundproblem ist, dass ich wenig/kaum Ahnung vom Coden hab und das leider nicht so hin bekomme, wie es notwendig wäre
|
mat
AdministratorLegends never die
|
Du bist ja scheinbar in diesem Bereich tätig, sowohl beruflich als auch hobbymäßig. Wäre doch sicher eine nette Erweiterung deiner Fähigkeiten. Es ist nie zu spät, etwas zu lernen.
|
TOM
Super ModeratorOldschool OC.at'ler
|
Du bist ja scheinbar in diesem Bereich tätig, sowohl beruflich als auch hobbymäßig. Wäre doch sicher eine nette Erweiterung deiner Fähigkeiten. Es ist nie zu spät, etwas zu lernen. Jein... ich kann php/JS so gut, um es lesen (manchmal anpassen) und verstehen zu können, was es macht... schreiben nicht. der kosten/nutzen faktor zahlt sich einfach nicht aus momentan, um tiefer ein zu steigen und deswegen hoffe ich auf die leute mit den skills in dem gebiet, da es meinem verständnis nach keine große sache sein sollte (wahrscheinlich realisiert in der zeit, wo wir diskutieren... aber nicht erlernt). ausserdem kann man's auch so sehen... wenn ich den unterschied zwischen alten parts und neuem all-in-one skript sehe, werde ich auch was daraus/davon lernen... edit: mit trial and error bin ich die letzten wochen (mit meinem hobby-projekt) mehr als genug beschäftigt btw. Ist nicht so, als wenn ich mit jedem sch**s da her fragen komm... nur der countdown stammt original von hier...
|