Javascript countdown

Moin, hab es jetzt endlich hin bekommen.
Sieht zwar katastrophal aus (finde ich) aber es klappt.
hab aber noch ein kleines Problem.
PHP:
<!DOCTYPE html>
<?php
$btime = 10;


?>
<html lang="en">
    <head>
     
        <meta charset="utf-8">

        <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
        Remove this if you use the .htaccess -->
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

        <title>Test</title>
        <meta name="description" content="">
        <meta name="author" content="Evildad">

        <meta name="viewport" content="width=device-width; initial-scale=1.0">

        <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
        <link rel="shortcut icon" href="/favicon.ico">
        <link rel="apple-touch-icon" href="/apple-touch-icon.png">
    </head>

    <body>
        <div>
            <header>
                <h1>Test</h1>
            </header>
         

            <div>
             
             
             
                <?php
                if ($_POST['bauenhq']) {
                    ?><script language='JavaScript'>
                    var Zeit = '<?php echo $btime; ?>';

                    function doTime() {
                     if (Zeit >= 0) {
                    document.formular.count.value = Zeit--;
                    var aktiv = setTimeout('doTime()', 1000);
                      }
                      else {
                    clearTimeout('doTime()');
                    window.location.href='';
                      }
                    }
                    </script>
             
                    <body onLoad='doTime()'>

                    <form name='formular'>
                    Countdown  <input type='text' name='count' size='3'>
                    </form>
                    <?php
                    } else {
                    echo "<form action='new_file2.php' method='post'>
                    <br />
                    <input type='submit' name='bauenhq' value='Bauen'>
                    </form>";
                }
                ?>
            </div>

            <footer>
                <p>
                    &copy; Copyright  by Evildad
                </p>
            </footer>
        </div>
    </body>
</html>
Wie bekomme ich die Fehlermeldung weg wenn post nicht gesetzt ist?
(ps: ist nur ein Test code ohne Datenbank)

Ach und wie kann man dann hacken setzen das das Thema erfolgreich beantwortet wurde? Bin gerade blind und finde das nicht :(
 
Zuletzt bearbeitet:
function countdown(time,id){
//time brauchen wir später noch
t = time;
//Tage berechnen
d = Math.floor(t/(60*60*24)) % 24;
// Stunden berechnen
h = Math.floor(t/(60*60)) % 24;
// Minuten berechnen
// Sekunden durch 60 ergibt Minuten
// Minuten gehen von 0-59
//also Modulo 60 rechnen
m = Math.floor(t/60) %60;
// Sekunden berechnen
s = t %60;
//Zeiten formatieren
d = (d > 0) ? d+"d ":"";
h = (h < 10) ? "0"+h : h;
m = (m < 10) ? "0"+m : m;
s = (s < 10) ? "0"+s : s;
// Ausgabestring generieren
strZeit =d + h + ":" + m + ":" + s;
// Falls der Countdown noch nicht zurückgezählt ist
if(time > 0)
{
//Countdown-Funktion erneut aufrufen
//diesmal mit einer Sekunde weniger
window.setTimeout('countdown('+ --time+',\''+id+'\')',1000);
}
else
{
//führe eine funktion aus oder refresh die seite
//dieser Teil hier wird genau einmal ausgeführt und zwar
//wenn die Zeit um ist.
strZeit = "Fertig";
}
// Ausgabestring in Tag mit id="id" schreiben
document.getElementById(id).innerHTML = strZeit;
}

Hallo ich benutze auch diesen counter, mein problem ist das die tage die 2 monate oder länger betragen nicht richtig angezeigt werden.

Beispiel:
Mein datum in der DB $endstamp = 2019-11-09 00:00:00

Javascript:
Init<script>countdown(<?php echo round((( strtotime($endstamp) - time())),0);?>,'<?php echo $id;?>');</script>

Angezeigt bekomme ich jedoch 4T 02:08:29 obwohl das datum länger al 1 jahr ist.

wo liegt mein fehler?
 
Ein paar Anmerkungen zur Skriptqualität:
  • setTimeout bitte nie mit einem String als Argument aufrufen.
  • Keine globalen Variablen nutzen, wenn es lokale Variablen/Konstanten auch getan hätten --> let/const
 
Zurück