Funktion mehrmals ausführen

Sasser

Erfahrenes Mitglied
Guten Abend!

Ich weiß nicht, ob ich es ins richtige Forum gesteckt habe, weil es sich um PHP und JavaScript handelt!? Also verzeiht mir bitte, wenn es falsch sein sollte :( :)

Ich rufe zur Zeit folgende PHP-Funktion auf und das funktioniert auch super. Allerdings nicht auf einer Seite, wo ich die Funktion mehrmals anwenden möchte.

Wie schreibe ich das Script so um, sodass es mehrmals aufgerufen wird? Im Body rufe ich die JavaScript-Funktion auf.

PHP:
function countdown($timepast,$timetotal) {
$timeleft = $timetotal - $timepast;
$countdown = "<script type='text/javascript'>";
$countdown .= "var timepast = $timepast;";
$countdown .= "var timetotal = $timetotal;";
$countdown .= "var timeleft = $timeleft;";
$countdown .= "function countdown()";
$countdown .= "{";
$countdown .= "pixel = (150*timepast)/timetotal;";
$countdown .= "document.getElementById('timebar').style.width = pixel+\"px\";";
$countdown .= "hours = Math.floor(timeleft/(60*60));";
$countdown .= "hours = (hours < 10) ? '0'+hours : hours;";
$countdown .= "temp = timeleft - hours*60*60;";
$countdown .= "minutes = Math.floor(temp/60);";
$countdown .= "minutes = (minutes < 10) ? '0'+minutes : minutes;";
$countdown .= "seconds = Math.floor(temp - minutes*60);";
$countdown .= "seconds = (seconds < 10) ? '0'+seconds : seconds;";
$countdown .= "time = hours + ':' + minutes + ':' + seconds;";
$countdown .= "document.getElementById('countdown').innerHTML = time;";
$countdown .= "timeleft--;";
$countdown .= "timepast++;";
$countdown .= "if (timeleft >= 0)";
$countdown .= "{";
$countdown .= "window.setTimeout('countdown();', 1000);";
$countdown .= "} else {";
$countdown .= "location.href = '$_SERVER[REQUEST_URI]';";
$countdown .= "}";
$countdown .= "}";
$countdown .= "</script>";
$countdown .= "<div style='width:150px;height:20px;background-color:#C0C0C0;border-width:1px;border-style:solid;border-color:#000000;text-align:left;'>";
$countdown .= "<div id='timebar' style='position:absolute;width:";
$countdown .= ( 150 * $timepast ) / $timetotal;
$countdown .= "px;height:20px;background-color:#008000;'></div>";
$countdown .= "<div id='countdown' style='position:absolute;width:150px;height:20px;text-align:center;font-weight:bold;'>";
$countdown .= secondsintime ( $timeleft );
$countdown .= "</div>";
$countdown .= "</div>";
return $countdown;
}
 
Ich rufe zur Zeit folgende PHP-Funktion auf und das funktioniert auch super. Allerdings nicht auf einer Seite, wo ich die Funktion mehrmals anwenden möchte.

Wie schreibe ich das Script so um, sodass es mehrmals aufgerufen wird?

Ich verstehe leider nicht so ganz was du meinst. Soweit ich das oben erkennen kann, willst du die php Funktion mehrmals ausführen?, du kannst die doch einfach mehrmals starten:
PHP:
countdown(12,441);
countdown(4,4);
countdown(0,60);
 
Ja, das weiß ich und hab es auch schon versucht, allerdings möchte ich die JavaScript-Funktion EINMAL aufrufen, nur eventuell mi einer Schleife...

// EDIT: So funktioniert es, aber gibt es da keine elegantere Version!?

PHP:
function countdown($timepast,$timetotal,$id) {
$timeleft = $timetotal - $timepast;
$countdown = "<script type='text/javascript'>";
$countdown .= "var timepast_$id = $timepast;";
$countdown .= "var timetotal_$id = $timetotal;";
$countdown .= "var timeleft_$id = $timeleft;";
$countdown .= "function countdown_$id()";
$countdown .= "{";
$countdown .= "pixel_$id = (150*timepast_$id)/timetotal_$id;";
$countdown .= "document.getElementById('timebar_$id').style.width = pixel_$id+\"px\";";
$countdown .= "hours_$id = Math.floor(timeleft_$id/(60*60));";
$countdown .= "hours_$id = (hours_$id < 10) ? '0'+hours_$id : hours_$id;";
$countdown .= "temp_$id = timeleft_$id - hours_$id*60*60;";
$countdown .= "minutes_$id = Math.floor(temp_$id/60);";
$countdown .= "minutes_$id = (minutes_$id < 10) ? '0'+minutes_$id : minutes_$id;";
$countdown .= "seconds_$id = Math.floor(temp_$id - minutes_$id*60);";
$countdown .= "seconds_$id = (seconds_$id < 10) ? '0'+seconds_$id : seconds_$id;";
$countdown .= "time_$id = hours_$id + ':' + minutes_$id + ':' + seconds_$id;";
$countdown .= "document.getElementById('countdown_$id').innerHTML = time_$id;";
$countdown .= "timeleft_$id--;";
$countdown .= "timepast_$id++;";
$countdown .= "if (timeleft_$id >= 0)";
$countdown .= "{";
$countdown .= "window.setTimeout('countdown_$id();', 1000);";
$countdown .= "} else {";
$countdown .= "location.href = '$_SERVER[REQUEST_URI]';";
$countdown .= "}";
$countdown .= "}";
$countdown .= "</script>";
$countdown .= "<div style='width:150px;height:20px;background-color:#C0C0C0;border-width:1px;border-style:solid;border-color:#000000;text-align:left;'>";
$countdown .= "<div id='timebar_$id' style='position:absolute;width:";
$countdown .= ( 150 * $timepast ) / $timetotal;
$countdown .= "px;height:20px;background-color:#008000;'></div>";
$countdown .= "<div id='countdown_$id' style='position:absolute;width:150px;height:20px;text-align:center;font-weight:bold;'></div>";
$countdown .= "</div>";
return $countdown;
}

echo countdown ( '10', '1000', '1' );
echo countdown ( '20', '1000', '2' );
echo countdown ( '30', '1000', '3' );

echo "<body bgcolor='#C0C0C0' OnLoad=\"countdown_1();countdown_2();countdown_3();\">";
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück