Andreas: Wer erklährt mir warum mein Script so funktioniert?

Beitrag lesen

Hallo!
Irgendwie komme ich mit den verschiednen Zeitformaten, Zonen und Sprachen nicht mehr klar. Jedenfalls war es mein Anliegen, ein Script zu schreiben, welches mir schön einen Countdowsn anzeigt. Das habe ich jetzt geschafft, aber das komische, ich verstehe es selbst nicht warum es jetzt geht!!!
Ist leider eine etwas komplizierte Kombination aus PHP/MySQL und Javascript/DHTML.

Function DateDiff ($interval, $date1,$date2) {

$timedifference =  $date2 - $date1;

switch ($interval) {
        case "w":
            $retval  = bcdiv($timedifference ,604800);
            break;
        case "d":
            $retval  = bcdiv( $timedifference,86400);
            break;
        case "h":
             $retval = bcdiv ($timedifference,3600);
            break;
        case "n":
            $retval  = bcdiv( $timedifference,60);
            break;
        case "s":
            $retval  = $timedifference;
            break;

}
    return $retval;

}

$query = "SELECT * FROM auktionen WHERE ID = 1 ";
 $res = mysql_query($query, $m_link);
  if (!$res)
    die("Anfrage $query scheitert.<br>\n");

$auktion=mysql_fetch_array($res);

$currenttime = time();
$newtime = strtotime ($auktion[Ende]);
$diff = DateDiff ("s",$currenttime ,$newtime);

?>
<html>
<head>
<title>net - auctions</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script type="text/javascript" src="dhtml.js"></script>
<script type="text/javascript">
<!--
<?php printf("diff = '%s';\n", addslashes($diff)); ?>

var Zeit2 = new Date();
 var AbsolutDann = Zeit2.getTime() + (diff*1000);

function toSt(n) {
  s=""
  if(n<10) s+="0"
  return s+n.toString();
}
function ZeitAnzeigen() {

var Zeit = new Date();
 var AbsolutJetzt = Zeit.getTime();
 var count = Math.floor((AbsolutDann - AbsolutJetzt)/1000);
 var Sekunde=toSt(count%60);
  count=Math.floor(count/60);
 var Minute=toSt(count%60);
  count=Math.floor(count/60);
 var Stunde=toSt(count%24);
  count=Math.floor(count/24);
 var Tag=count;

if(Tag=0) {Tage = " ";}
  if(Tag=1) {Tage = " " + Tag +" Tag";}
  if(Tag>1) {Tage = " " + Tag +" Tage";}

var Uhrzeit = Stunde + ":" + Minute + ":" + Sekunde;

if(DHTML) {
   if(NS) setCont("id","Uhr",null,"<span class="Uhr">" + Uhrzeit + "</span>");
   else   setCont("id","Uhr",null,Uhrzeit);
 }
 else return;

window.setTimeout("ZeitAnzeigen()",1000);
}
//-->
</script>

Also, hab nur das dringelassen, mit der Zeit zu tun hat. Mein Problem ist jetzt folgendes, dass die Zeitdifferenz, z.B. wenn diese definitiv nur 5 Minuten beträgt, müßte $diff doch 5*60=300 errechnen, oder? Stattdessen steht da was von 86344 oder so ähnlich.

Nun gut, denke ich mir, ist wohl was falsch. Aber diesen Wert übergebe ich ja dann an das Javascript(steht da auch im Quelltext) und verwende den für die Differenz, also aktuelle Zeit plus 86344(Bsp.) Sekunden, und man höre und Staune, die Anzeige gibt genau den richtigen Wert aus!!!
Klar, schön für mich, nur gerne würde ich wenigstens das was ich selbst programmiere verstehen ;-)
Weiß jemand, wo vielleicht mein Denkfehler liegt, bzw. kann das erklähren???

Grüsse
  Andreas