URL: https://www.overclockers.at/coding-stuff/simpler-php-js-countdown_229650/page_1 - zur Vollversion wechseln!
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
Code: 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; ?>
Code:<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>
Code:<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>
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.
Zitat von -=Willi=-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.
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.
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
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.
Zitat von matDann ist es eh leicht... Natürlich entsprechend umgestaltet.
keiner zeit dafür?
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.
Zitat von matWenn 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.
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.
Zitat von matDu 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.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025