Ihr habt wieder ein cooles PHP-Skript gebastelt, aber die Datenbank ist so langsam und Ihr möchtet auf einem Blick sehen, wie lange der Prozess noch dauert?
Dazu gibt es meine ProgressBar.class in php:
class ProgressBar {
var $caption;
var $width;
var $height;
var $color;
var $bgcolor;
function ProgressBar($caption, $width = 100, $height = 24, $color = "blue", $bgcolor = "white") {
$this->caption = $caption;
$this->width = $width;
$this->height = $height;
$this->color = $color;
$this->bgcolor = $bgcolor;
}
function show() {
printf("<style type=text/css>\n");
printf(" #__pbar_tbl{");
printf(" border-style: solid;\n");
printf(" border-color: black;\n");
printf(" border-width: 1px;\n");
printf(" }\n");
printf("</style>\n");
printf("%s \n", $this->caption);
printf("<table id=\"__pbar_tbl\" border=\"0\" width=\"%s\" cellspacing=0 cellpadding=0>\n", $this->width);
printf(" <tr height=\"%s\">\n", $this->height);
printf(" <td id=\"__pbar\" bgcolor=\"%s\" width=\"0%%\"></td>\n", $this->color);
printf(" <td id=\"__pbar_bg\" bgcolor=\"%s\" width=\"100%%\"></td>\n", $this->bgcolor);
printf(" </tr>\n");
printf("</table>\n");
}
function set($percent) {
printf("<script>document.getElementById('__pbar').width=\"%s\"</script>\n", $percent);
printf("<script>document.getElementById('__pbar_bg').width=\"%s\"</script>\n", 100-$percent);
}
}
Wie wird das benutzt?
In Eurem Programm/Skript lädt Ihr die Klasse mit
require_once("ProgressBar.class.php");
an einer beliebigen Stelle, dort wo Ihr den Fortschrittsbalken anzeigen wollt, macht Ihr dann folgendes:
$pbar = new ProgressBar("Überschrift", 300, 20, "blue", "white");
$pbar->show();
Jetzt startet Ihr Eure Berechnungen und in regelmäßigen Abständen setzt Ihr den Balken neu:
$pbar->set($wert_in_prozent);
Beispiel:
<html>
<body>
<?php
require("ProgressBar.class.php");
$pbar = new Progressbar("Überschrift", 300, 20, "blue", "white");
$pbar->show();
$i = 0;
while ($i < 100) {
sleep(5); // berechnung simulieren
$i += 10; // wieder 10% abgearbeitet
$pbar->set($i);
}
?>
</body>
</html>