kostenloser Webspace werbefrei: lima-city


PHP Countdown

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    flamme

    flamme hat kostenlosen Webspace.

    Hallo zusammen,

    ich bin noch neu in PHP und habe folgende Frage:

    Ist es möglich einen Countdown mit PHP (und ohne Java!) zu erstellen, der von z.B. 30 Sekunden aus runterzählt und dann bei 0 eine Aktion auslöst?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    PHP wird am Server ausgeführt, deshalb würde deine Seite besten Falls 30 Sekunden lang beim Laden hängen... aber von Countdown ist das weit entfernt.

    Beitrag zuletzt geändert: 25.9.2012 22:25:53 von hackyourlife
  4. Nein. PHP ist ein Hypertext-Präprozessor. PHP verändert ein HTML Dokument bevor es zum Browser gesendet wird. Sobald der Browser das fertige HTML Dokument in die Finger bekommt, hat PHP keine Kontrolle darüber und entsprechend kann man da auch nicht dynamisch irgendwelche Zahlen runterzählen.

    Von daher wirst du um JavaScript kaum herumkommen. Man könnte es auch mit Java, Flash oder Silverlight machen, aber das ist viel zu viel Aufwand.
  5. Autor dieses Themas

    flamme

    flamme hat kostenlosen Webspace.

    Danke für eure Antwort.
    Ich habe bereits im Internet gesucht und ein Java-Skript für einen kleinen Countdown gefunden:

    <script type="text/javascript">
    var secs=30; //Sekunden einstellen
    function docount(remaining){
    if(remaining==0){ document.location.href=""; }
    else{
    document.getElementById('countdown').firstChild.nodeValue=remaining+" Sekunden ";
    remain=remaining-1;
    setTimeout("docount(remain);",1000);
    }
    }
    setTimeout("docount(secs);",100);
    </script>

    Kann ich es schaffen, dass nach Ablauf der Zeit eine "php-Aktion" ausgeführt wird (Änderung bei einer Datenbank)?
  6. flamme schrieb:
    Kann ich es schaffen, dass nach Ablauf der Zeit eine "php-Aktion" ausgeführt wird (Änderung bei einer Datenbank)?


    Siehe Ajax.
    Einfach mal oben in der Suche eingeben, du wirst sicher genug dazu finden :thumb:
  7. m******e

    flamme schrieb:
    Kann ich es schaffen, dass nach Ablauf der Zeit eine "php-Aktion" ausgeführt wird (Änderung bei einer Datenbank)?
    Ja.
    Dein Script würde allerdings die eigentliche Seite verlassen - und zur PHP-Seite springen, und bei deaktiviertem JavaScript würde gar nix passieren.

    Hier mal 3 Varianten basierend auf Html, mit und ohne JavaScript. Alle 3 Varianten nutzen ein unsichtbares iframe, in dem eine Dummy-Datei geladen wird. Die Dummy-Datei sorgt dafür, dass das PHP-Script auch bei deaktiviertem JavaScript aufgerufen wird. Das iframe sorgt dafür, dass die eigentliche Seite nicht verlassen wird. Ajax wird hierbei nicht verwendet, und der Countdown ist zu Testzwecken auf 3 Sekunden gestellt.
    Live-Beispiele jeweils unter den Scripten.

    Das PHP-Script wäre in jedem Fall das selbe, und heißt Beispielhaft "ausfuehren.php".
    Hallo, ich bin die PHP-Datei :)
    <? PHP
    // Quelltext
    ?>
    > Live-Beispiel PHP-Script <


    Variante 1: JavaScript-Counter wird angezeigt
    index.html:
    <html><head><title>Counter: Variante 1</title>
    <style type="text/css">
    #framer {position:absolute;top:0;left:0;
    width:0px;height:0px;visibility:hidden;}
    </style>
    </head>
    
    <body>
    <script type="text/javascript">
    var t= 3, //Sekunden einstellen
    url= "ausfuehren.php", //Url der PHP-Datei
    s=" Sekunde";function los(){window.setTimeout("docount()",1000)}
    function go(to){
    document.getElementById('countdown').firstChild.nodeValue=t+to}
    function docount(){t--;if(t==1){go(s)}else{go(s+"n")}
    if(t==0){framer.location.replace(url);return false}los()}los()
    </script>
    
    <div id="countdown">3 Sekunden</div>
    <iframe id="framer" name="framer" src="dummy.html"></iframe>
    </body></html>
    dummy.html
    <noscript>
    <meta http-equiv="refresh" content="3; URL=ausfuehren.php"></noscript>
    > Live-Beispiel Variante 1 <


    Variante 2: JavaScript-Counter wird nicht angezeigt
    index2.html:
    <html><head><title>Counter: Variante 2</title>
    <style type="text/css">
    #framer {position:absolute;top:0;left:0;
    width:0px;height:0px;visibility:hidden;}
    </style>
    </head>
    
    <body>
    <script type="text/javascript">
    var t= 3, //Sekunden einstellen
    url= "ausfuehren.php"; //Url der PHP-Datei
    function los(){window.setTimeout("docount()",1000)}
    function docount(){t--;if(t==0){framer.location.replace(url);
    return false}los()}los()
    </script>
    
    <iframe id="framer" name="framer" src="dummy.html"></iframe>
    </body></html>
    dummy.html
    <noscript>
    <meta http-equiv="refresh" content="3; URL=ausfuehren.php"></noscript>
    > Live-Beispiel Variante 2 <


    Variante 3: Kein JavaScript-Counter, kein JavaScript
    index3.html:
    <html><head><title>Counter: Variante 3</title>
    <style type="text/css">
    #framer {position:absolute;top:0;left:0;
    width:0px;height:0px;visibility:hidden;}
    </style>
    </head>
    
    <body>
    <iframe id="framer" src="dummy3.html"></iframe>
    </body></html>
    dummy3.html
    <meta http-equiv="refresh" content="3; URL=ausfuehren.php">
    > Live-Beispiel Variante 3 <

    Ajax ist sicherlich die elegantere Methode, allerdings müsste auch dann an ein <noscript><iframe> und eine Dummy-Datei mit <noscript> Bereich gedacht werden, falls User mit deaktiviertem Javascript die Seiten ansurfen.

    Beitrag zuletzt geändert: 26.9.2012 5:43:04 von menschle
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!