Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Fortschrittsbalken mit <div>    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Stephen Falken
Mitglied
Aktiver User


Dabei seit: 21.09.2008
Herkunft:
Posts: 227
     Fortschrittsbalken mit <div> Zitat | Bearbeiten

Hallo, ich habe dieses Skript mal ausgebuddelt, etwas erweitert und wollte es jetzt zur Verfügung stellen. Der Titel und die Kommentare sollten eigentlich alles sagen.
Bitte Fehler melden und auch sonst ist Rückmeldung erwünscht.

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
<?php
/*
 * ********************************************************************************************* *
 * FORTSCHRITTSBALKEN MIT OPTIONALER PROZENTANZEIGE                                              *
 * --------------------------------------------------------------------------------------------- *
 * [by LC] für php-einfach.de, Oktober 2008                                                      *
 * Das Skript darf frei verwendet werden, es darf aber weder dieser Kasten entfernt oder         *
 * verändert werden. Ebenso darf kein eigenes Copyright oder Ähnliche Zeichen eingefügt werden!  *
 *                                                                                               *
 * Bitte folgende Daten angeben:                                                                 *
 *         $gesamtbreite: Breite des Balkens in Pixel (ohne Einheit)                                *
 *         $grundwert: Der Wert, den 100% haben                                                     *
 *         $prozentwert: Den Wert, dessen Anteil am Grundwert berechnet werden soll                 *
 *        $prozent_disp_round: Anzahl der Nachkommastellen der Prozentanzeige                      *
 *         $prozentangabe_type: Art der Balkendarstellung (0, 1 oder 2):                            *
 *             0:    Leerer Balken, keine Prozentangabe                                               *
 *             1:    Leerer Balken, Prozentangabe eingerückt unter dem Balken                         *
 *             2:    Prozentangabe im Balken                                                          *
 *         $border: Rahmendefinition in CSS (OHNE das abschließende ; ) -> "none" für keinen Rahmen *
 *                                                                                                  *
 *         $farben: Der Balken kann je nach Prozentzahl unterschiedlich gefärbt werden.             *
 *                 In das Array die Prozentwerte von und bis zu der eine Farbe reichen soll durch  *
 *                  ein Minus getrennt angeben und in den zweiten Teil die jeweilige Farbe          *
 *                  (s. Beispielangaben). Soll der Balken nur eine Farbe haben, muss als Bereich    *
 *                  "000-100" angegeben werden.                                                     *
 * ********************************************************************************************* *
 */
$gesamtbreite 700//in Pixel
$grundwert 100;
$prozentwert 50;
$prozent_disp_round 0//Nachkommastellen
$prozentangabe_type 0
$border "1px solid black";

$farben = array("000-020" => "green",
                
"021-050" => "yellow",
                
"051-100" => "red"
);


/*
 * ***************************************************** *
 *         AB HIER KEINE ÄNDERUNGEN MEHR VORNEHMEN!         *
 * ***************************************************** *
 */

if(empty($border))
    
$border "1px solid black";

if(empty(
$prozent_disp_round))
    
$prozent_disp_round 0;
    
if(empty(
$prozentangabe_type))
    
$prozentangabe_type 0;


if(
$prozentwert $grundwert)
    
$prozentwert $grundwert;

$prozentsatz $prozentwert $grundwert;
$teilbreite $prozentsatz $gesamtbreite;
$prozentsatz_disp round((($prozentwert $grundwert) * 100), $prozent_disp_round);

$i 1;
foreach(
$farben AS $bereich => $farbe) {
    
$einzelwerte explode("-"$bereich);
    if((
$einzelwerte[0] <= $prozentsatz_disp) && ($prozentsatz_disp <= $einzelwerte[1])) {
        
$balken_farbe $farbe;
        break;
    }    
}

if(!isset(
$balken_farbe))
    
$balken_farbe "orange";
    
if(
$prozentangabe_type == 0) {
    
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe;'>&nbsp;</div>\n";
    echo 
"</div>\n";
}
elseif(
$prozentangabe_type == 1) {
    
if(
$teilbreite <= 10)
    
$wertbreite $teilbreite;
else
    
$wertbreite $teilbreite 10;
    
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe; height: 15px;'></div>\n";
    echo 
"</div>\n";
    echo 
"<span style='position: relative; left: ".$wertbreite."px;'>".$prozentsatz_disp."%</span>";
}
else {
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe;'>".$prozentsatz_disp."%</div>\n";
    echo 
"</div>\n";
}
?>


Die Datei ist auch angehängt.

Dateianhang:
 fortschrittsbalken.php.zip  (2 KB, 848 mal herruntergeladen)

15.10.2008, 21:52 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Und wofür soll das gut sein? Das ist die entscheidende Frage.

Soll es dafür sein, um den Besuchern einer Webseite zu zeigen, wie weit man schon mit der Webseite ist, oder ist es dafür da, um die dauer eines scriptes zu animieren? Oder wofür ist das gut?


06.11.2008, 22:31  
Stephen Falken
Mitglied
Aktiver User


Dabei seit: 21.09.2008
Herkunft:
Posts: 227
      Zitat | Bearbeiten

Das weiss ich doch nicht, wofür irgendwer sowas einsetzen möchte. Ich habe es damals erstellt, um in einem CMS zu zeigen, wie viel Platz auf dem Webspace vorhanden ist und wieviel davon schon belegt ist (vorausgesetzt "disk_total_space" ist aktiviert). Aber man kann damit auch alles andere darstellen; ich habe es nur zur Verfügung gestellt, weil vielleicht irgendwer so etwas braucht.


07.11.2008, 21:26 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Also lag ich mit meiner Annahme garnicht mal so falsch. Trotzdem danke für die Info.


08.11.2008, 01:02  
alex1702
Mitglied
Exzellenter User


Dabei seit: 25.05.2008
Herkunft: NRW
Posts: 1555
      Zitat | Bearbeiten

weiß einer wie man einen macht der selber immer weiter von 0% auf 100% geht so wie ein ladebalken?


Mfg
alex
12.11.2008, 13:02 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Zitat:
Orginal von alex1702
weiß einer wie man einen macht der selber immer weiter von 0% auf 100% geht so wie ein ladebalken?

ich habe darüber vprhin mal gegrübelti ch denke mal ein javascript was hochzählt und die werte per ajax an php weitzergibt.


25.12.2008, 12:20  
Gast


      Zitat | Bearbeiten

Wie bekomm ich den das mit dem Fortschrittsbalken hin so das der mir noch den verfügbaren Speicherplatz auf meinem Webspace anzeigt? Wie geht das mit dem disk_total_space?


28.02.2009, 21:17  
Nicklas2751
Mitglied
Sehr guter User


Dabei seit: 19.02.2008
Herkunft: Bayern
Posts: 519
      Zitat | Bearbeiten

Zitat:
Orginal von Gast
Wie bekomm ich den das mit dem Fortschrittsbalken hin so das der mir noch den verfügbaren Speicherplatz auf meinem Webspace anzeigt? Wie geht das mit dem disk_total_space?

einfach den prozent wer des freien speichers ausrechen und den wert dann mit in die dafür vorgsehene variable setzen


Über mich

----------------

01.03.2009, 18:41 Profil | PM | E-Mail  
HPTHMPL
Mitglied
Guter User


Dabei seit: 26.03.2009
Herkunft: Deutschland
Posts: 371
      Zitat | Bearbeiten

Bei mir steht jetzt der Text im Rahmen ganz links, ich weiß aber nicht, warum.
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
<?$gesamtbreite 600//in Pixel
$grundwert 100;
$prozentwert 10;
$prozent_disp_round 0//Nachkommastellen
$prozentangabe_type 0
$border "1px solid black";

$farben = array("000-033" => "red",
                
"034-067" => "yellow",
                
"068-100" => "green"
);


/*
 * ***************************************************** *
 *         AB HIER KEINE ÄNDERUNGEN MEHR VORNEHMEN!         *
 * ***************************************************** *
 */

if(empty($border))
    
$border "1px solid black";

if(empty(
$prozent_disp_round))
    
$prozent_disp_round 0;
    
if(empty(
$prozentangabe_type))
    
$prozentangabe_type 0;


if(
$prozentwert $grundwert)
    
$prozentwert $grundwert;

$prozentsatz $prozentwert $grundwert;
$teilbreite $prozentsatz $gesamtbreite;
$prozentsatz_disp round((($prozentwert $grundwert) * 100), $prozent_disp_round);

$i 1;
foreach(
$farben AS $bereich => $farbe) {
    
$einzelwerte explode("-"$bereich);
    if((
$einzelwerte[0] <= $prozentsatz_disp) && ($prozentsatz_disp <= $einzelwerte[1])) {
        
$balken_farbe $farbe;
        break;
    }    
}

if(!isset(
$balken_farbe))
    
$balken_farbe "orange";
    
if(
$prozentangabe_type == 0) {
    
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe;'>Aktueller Fortschritt: $prozentwert%&nbsp;</div>\n";
    echo 
"</div>\n";
}
elseif(
$prozentangabe_type == 1) {
    
if(
$teilbreite <= 10)
    
$wertbreite $teilbreite;
else
    
$wertbreite $teilbreite 10;
    
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe; height: 15px;'>Aktueller Fortschritt: $prozentwert</div>\n";
    echo 
"</div>\n";
    echo 
"<span style='position: relative; left: ".$wertbreite."px;'>".$prozentsatz_disp."%</span>";
}
else {
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe;'>".$prozentsatz_disp."Aktueller Fortschritt: $prozentwert%</div>\n";
    echo 
"</div>\n";
}
?>




1. Nachtrag: Grün
2. Nachtrag: Rot

Ich kann hellsehen: Wetten, dass ich deinen Source nicht errate
15.07.2009, 14:35 Profil | PM | E-Mail  
metty
Mitglied
Neuling


Dabei seit: 29.06.2010
Herkunft: keine Angabe
Posts: 1
      Zitat | Bearbeiten

hi

ist zwar schon alt das script aber sau gut

nur habe ein problem da ich kein php kann...

wollte ich gerne ma fragen ob es möglich wäre farbcodes einzufügen und zwar hier die zeile meine ich ...

 PHP 
1:
2:
3:
4:
$farben = array("000-020" => "red",
                "021-050" => "yellow",
                "051-100" => "black"
);



meinte dann solche farbcodes :

$green = ImageColorAllocate($im, 12,246,0);


wer echt super nett wenn mir jemand helfen könnte..


MFG Mathias Lorenz


29.06.2010, 17:28 Profil | PM | E-Mail  
Stephen Falken
Mitglied
Aktiver User


Dabei seit: 21.09.2008
Herkunft:
Posts: 227
      Zitat | Bearbeiten

Mit imagecolorallocate($im, $r, $g, $b) erstellst du ja aus einer RGB-Angabe (Rot, Grün, Blau) eine Farbe. Genauso kannst du diese drei Farben auch mit dem Befehl rgb(r,g,b) in das Array einsetzen:

 PHP 
1:
2:
3:
4:
$farben = array("000-020" => "rgb(12,246,0)",
                "021-050" => "rgb(255,0,0)",
                "051-100" => "rgb(255,255,255)"
);






Post wurde schon 1x editiert, das letzte mal am 09.07.2010 um 13:51 von Stephen Falken
09.07.2010, 13:51 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Hallo erstam super script. Habe aber mal ein paar fragen. Muss gleich sagen bin anfänger in php.

Ist es möglich im Fortschrittsbalken die die % anzuzeigen, wenn ja wie am besten!

Wei kann ich die %zahl ändern ohne die ganze datei/berich zu ändern. ist das überhabt möglich.

Danke schonmal im voraus


17.10.2010, 19:41  
Gast


      Zitat | Bearbeiten

Hat er zwar nicht erklärt, aber ich vermute mal du sagst dem Script über die Variabel prozentangabe_type ob die Prozentzahl angezeigt werden soll. Ich nehme an es soll 1 für JA, 0 für NEIN gelten.

$prozentangabe_type = 1;


18.10.2010, 16:27  
Gast


      Zitat | Bearbeiten

oh das habe ich übersehen die variable. doch hat er beschrieben:
$prozentangabe_type: Art der Balkendarstellung (0, 1 oder 2): *
* 0: Leerer Balken, keine Prozentangabe *
* 1: Leerer Balken, Prozentangabe eingerückt unter dem Balken *
* 2: Prozentangabe im Balken *


die frage wäre also geklärt, aber die andere:
Wei kann ich die %zahl ändern ohne die ganze datei/berich zu ändern. ist das überhabt möglich.



18.10.2010, 17:01  
Gast


      Zitat | Bearbeiten

Der Sinn dieses Skriptes besteht doch darin, dass die Prozentzahl sich dynamisch ändern lässt. Oder willst du sie eigenständig konstant definieren?

Dann brauchst du auch dieses Script nicht.


18.10.2010, 17:53  
Gast


      Zitat | Bearbeiten

also ich möchte den Fortschittsbalken so verwenden.
Ich betreue 3 Website's auf den ich immer neue änderungen machen möchte, nun soll auf einer externen seite, die Aktualliesirungen zushen sein und mit dem Fortschitsbalken soll zusehnen sein wie lange es dauert bis es veröffenlticht wird. oder ist dieses sckript dafür nicht geeignet


18.10.2010, 20:00  
Gast


      Zitat | Bearbeiten

Fragst du mich? Entscheide doch selbst.


18.10.2010, 20:59  
wolfsmichel
Mitglied
Neuling


Dabei seit: 07.11.2010
Herkunft: keine Angabe
Posts: 6
      Zitat | Bearbeiten

Hallo,

wie kann ich dieses Script verwenden. Ich will eine Seite haben wo ich diesen Div Balken einfuege. Nicht nur einmal sondern mehrmals es soll eine Todo liste werden wo der fertigungsstatus angyeigt wird. Nur weiss ich nicht wie ich das machen soll, das der Div Balken oefters und mit anderen proyenten verwenden kann.

bitte um Hilfe.


MfG
Wolfsmichel


07.11.2010, 16:47 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2619
      Zitat | Bearbeiten

Nimm einfach den ganzen Div-Tag und füg den mehrmals ein.

Wenn man HTML, CSS und PHP kann, weiss man, was das Script genau macht.


07.11.2010, 23:58 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Mal ne ganz blöde Frage: Wie stelle ich es an, dass die Beschriftung direkt hinter dem Balken steht?

Danke im Vorraus =)


02.01.2011, 22:51  
Gast


      Zitat | Bearbeiten

Hat sich erledigt, float wäre ne Methode


09.01.2011, 01:20  
Evermore
Mitglied
Anfänger


Dabei seit: 30.10.2013
Herkunft: Bad Münster am Stein
Posts: 63
      Zitat | Bearbeiten

Hallo zusammen,

ich weiß leider nicht wo mein Denkfehler liegt oder ob es vom PHP aus gar nicht möglich ist so etwas zum laufen zu bekommen und zwar möchte ich den Fortschrittsbalken durch Zahlenwerte aus der DB füttern um den Balken dynamisch zu machen, Die Errechnung und die korrekte Anzeige macht er. Bei der Anzeige der Farbe nutzt er leider immer nur die alternative Farbe (was ja nicht normal ist). Mein Quellcode sieht derzeit so aus:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
<?php
...

$gesamtbreite 700;
$grundwert $row["max_lp"]; // Gibt 10 aus
$prozentwert $row["lp"]; // Gibt zum Testen 9 aus
$prozent_disp_round 0;
$prozentangabe_type 3
$border "1px solid black";

$farben = array("000-".$grundwert => "red");
                
if(empty(
$border))
    
$border "1px solid black";

if(empty(
$prozent_disp_round))
    
$prozent_disp_round 0;
    
if(empty(
$prozentangabe_type))
    
$prozentangabe_type 0;


if(
$prozentwert $grundwert)
    
$prozentwert $grundwert;

$prozentsatz $prozentwert $grundwert;
$teilbreite $prozentsatz $gesamtbreite;
$prozentsatz_disp round((($prozentwert $grundwert) * 100), $prozent_disp_round);

$i 1;
foreach(
$farben AS $bereich => $farbe) {
    
$einzelwerte explode("-"$bereich);
    if((
$einzelwerte[0] <= $prozentsatz_disp) && ($prozentsatz_disp <= $einzelwerte[1])) {
        
$balken_farbe $farbe;
        break;
    }    
}

if(!isset(
$balken_farbe))
    
$balken_farbe "orange";
    
if(
$prozentangabe_type == 0) {
    
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe;'>&nbsp;</div>\n";
    echo 
"</div>\n";
}
elseif(
$prozentangabe_type == 1) {
    
if(
$teilbreite <= 10)
    
$wertbreite $teilbreite;
else
    
$wertbreite $teilbreite 10;
    
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe; height: 15px;'></div>\n";
    echo 
"</div>\n";
    echo 
"<span style='position: relative; left: ".$wertbreite."px;'>".$prozentsatz_disp."%</span>";
}
else {
    echo 
"<div style='text-align: left; border: $border; width: ".$gesamtbreite."px; height: auto; padding: 0px;'>\n";
        echo 
"\t<div style='text-align: center; width: ".$teilbreite."px; background-color: $balken_farbe;'>".$prozentsatz_disp."%</div>\n";
    echo 
"</div>\n";
}

...
?>


Ich bekomme den Balken angezeigt auch mit 90% nur der Balken ist Orange nicht Rot (wie im Array in Zeile 14 angegeben), Mir ist klar das ich auch in Zeile 43 - Rot eintragen kann, ist aber ja nicht Sinn der Sache.

Kann man keine Variablen innerhalb eines Arrays verwenden?




Post wurde schon 2x editiert, das letzte mal am 13.12.2013 um 16:21 von Evermore
13.12.2013, 16:20 Profil | PM | E-Mail  
Inuyasha
Mitglied
Aktiver User


Dabei seit: 15.06.2009
Herkunft: keine Angabe
Posts: 191
      Zitat | Bearbeiten

wegen:
if(!isset($balken_farbe))
$balken_farbe = "orange";

der geht bei dir nicht in die foreach rein.
Kannst dir ja mal einige Variablen mit echo ausgeben lassen und schauen was genau wo getan wird und wieso das Skript das macht was es macht ^^

edit: ich glaub ich versteh das problem jetzt.

$grundwert = 10;
$prozentwert = 9;

sind also 90% und hier fragst du:

$farben = array("000-".$grundwert => "red");

also von 0%-10% soll rot kommen. Da du aber bei 90% bist und diese 90% nicht definiert sind greift folgendes:
if(!isset($balken_farbe))
$balken_farbe = "orange";




Post wurde schon 1x editiert, das letzte mal am 13.12.2013 um 17:33 von Inuyasha
13.12.2013, 17:22 Profil | PM | E-Mail  
Evermore
Mitglied
Anfänger


Dabei seit: 30.10.2013
Herkunft: Bad Münster am Stein
Posts: 63
      Zitat | Bearbeiten

Ach verdammt... Ja...

Nun muss ich mal schauen wie ich anstatt die Prozent die Zahlen angezeigt bekomme und PHP das richtig rechnet... weil ich will das der dann folgendes anzeigt halt in dem Balken:

 PHP 
1:
2:
LP: [       9/10| ]
MP: [       10/10|]

die Balken mal primitiv dargestellt.

Weil bei einem Levelup oder so sich die werte ja erhöhen (die werden ja dann auch in die DB geschrieben) so das dann nach dem nächsten refresh die neuen Werte als Balken gezeigt werden. Also ich hoffe man versteht mich was mein Gedankengang ist.


13.12.2013, 19:05 Profil | PM | E-Mail  
Htaccess
Mitglied
Sehr guter User


Dabei seit: 22.08.2010
Herkunft: Deutschland
Posts: 742
      Zitat | Bearbeiten

Ist doch einfach.

(Max. Lebensanzeige / 100) * Ermittelte Prozentzahl


16.12.2013, 10:35 Profil | PM | E-Mail  
Seiten (2):  1  2 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Fortschrittsbalken mit <div>   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz