# Funktion mehrmals ausführen



## Sasser (27. Juni 2009)

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.


```
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;
}
```


----------



## Nord-Süd-Richtung (27. Juni 2009)

Sasser hat gesagt.:


> 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:

```
countdown(12,441);
countdown(4,4);
countdown(0,60);
```


----------



## Sasser (27. Juni 2009)

Dabei spielt aber die JavaScript  - Funktion nicht mit...


----------



## Maik (27. Juni 2009)

Hi,

hierbei dürfte es sich wohl um das gleiche Problem wie einst in deinem Thread Javascript Countdown mehrmals aufrufen handeln - Stichwort: eindeutiger ID-Bezeichner im Dokumentbaum.

mfg Maik


----------



## Sasser (27. Juni 2009)

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!?


```
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();\">";
```


----------

