• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Werte in balken darstellen

Status
Für weitere Antworten geschlossen.

Mars@Gera

Mitglied
Habe bei google nix gefunden:
Wie kann ich einen Wert in einem Balken darstellen?
Der Wert ist ein Prozentwert!

MfG Marcel
 
Werbung:
Ich habs noch nie gemacht, würds aber so machen:

Du erstellst eine Balkengrafik, zB 2px breit. Dann startest du eine Schleife, die sich x mal (je nach der Prozentzahl) wiederholt und immer einmal die Balkengrafik wiedergibt.
Dann hast du am Ende einen Balken, der immer entsprechend der Prozentzahl breit ist.

MfG Icy
 
Am einfachsten geht das mit den height oder width-Angaben im img-Tag
PHP:
echo "<img src=\"balkengif.gif\" alt=\"$wert %\" width=\"$wert\" height=\"10\"  />";
 
Werbung:
auch wenn diese methoden funktionieren und schön einfach sind, eine professionelle methode wäre eine eigens erstellt grafik zu benutzen, die mit Hilfe der Image-Funktionen dynamisch erstellt wird
 
es ist nur komplizierter, besser evtl nicht.

wiegesagt ein div mit einem hintergrundbild welches sich wiederholt, die breite entspricht relativgesehen die %zahl.

eine grafik draus bauen würde ich nur, wenn diese extern eingebunden wird, "schick" wäre wenn man die ming schnittstelle nutzt und mit actionskript arbeitet. du kannst sogar recht simpel mit ajax eine echtzeit statistik realisieren, bei einer grafik wäre dies wohl kaum gut möglich oder mit unnötigen traffik ausstössen verbunden.
 
auch wenn diese methoden funktionieren und schön einfach sind, eine professionelle methode wäre eine eigens erstellt grafik zu benutzen, die mit Hilfe der Image-Funktionen dynamisch erstellt wird
Warum ist es professioneller verschieden große Grafiken mit php zu erzeugen,
wenn ein einziges 1px1px gif reicht?
 
Werbung:
weil man damit die wiederholung vermeiden kann, das bild immer wieder auszugeben. Außerdem ist es flexibler. Dazu gehört die einfache externe Anzeige und die Kompabilität
 
Ich habe das jetzt mit der <img> sache gemacht, geht leider aber nicht, kann mal jm. drüberschauen?

PHP:
    while($row = mysql_fetch_assoc($sql))
    {
    //Wert aus DB einer Variable zuordnen
    $wert = $row['prozent'];

      echo '<tr>';
      echo '<td id="titel" align="center" height="40" width="45%"><b>'.$row['titel'].'<img src=">" alt=""></td>';
      echo '<td align="center"<img src=\"img/topic.gif\" alt=\"$wert\" width=\'$wert\' height=\"10\"  /></td>';
      echo '</tr><tr>';
      echo '<td colspan="2" align=\'left\' width=\'10%\'>'.$row['beschreibung'].'</td>';
      echo '</tr>';
    }
 
weil man damit die wiederholung vermeiden kann, das bild immer wieder auszugeben. Außerdem ist es flexibler. Dazu gehört die einfache externe Anzeige und die Kompabilität

dafür renderst du bei jedem request ein bild und berechnest intern die wiederholungen ? ich denke du liegst falsch, wesentlich schonender ist ein css mit einem background, dieses könnte sogar noch dynamisch via ajax in (fast) echtzeit angepasst werden. ein bild dagegen ist stur.

es gibt gründe dafür, dass google analythics keine bilder anzeigt, sondern dynamisch die statistik zeigt. ausnahmen sind natürlich kreisdiagramme u.s.w.
 
Werbung:
Das geht auch ohne php und Grafiken, rein mit CSS:

Code:
<div style="height: 100px;position: relative;width: 12px;">
<div style="height: 80%;position: absolute;bottom: 0px;left: 0px;width: 100%;background-color: red;font-size: 1px;">&nbsp;</div>
</div>

Das sollte einen roten Balken erzeugen, der 80% darstellt.
 
Ich hätte jetzt bitte mal nur eine korrektur meines Scriptes!
Script:
PHP:
    while($row = mysql_fetch_assoc($sql))
    {
    //Wert aus DB einer Variable zuordnen
    $wert = $row['prozent'];

      echo '<tr>';
      echo '<td id="titel" align="center" height="40" width="45%"><b>'.$row['titel'].'<img src=">" alt=""></td>';
      echo '<td align="center"><img src=\"img/topic.gif\" alt=\"$wert\" width=\"$wert\" height=\"10\" /></td>';
      echo '</tr><tr>';
      echo '<td colspan="2" align=\'left\' width=\'10%\'>'.$row['beschreibung'].'</td>';
      echo '</tr>';
    }

es steht nur da:
HTML:
\"$wert\"
 
Werbung:
du kannst auch folgendes machen:
du machst nebeneinander lauter divs. dann hast du eine variable mit zahl und je höher die zahl ist, desto mehr divs bekommen als background meinetwegen die farbe grün. fertig
 
Mit Farben habe ich e noch was for, da muss ich noch ne switch-Schleife machen!

Aber ich will des erstmal hinbekommen, das der mir nen Balken macht, mit dem <img> geht nicht recht!
Muss ich mir was anderes einfallen lassen!

MfG Marcel
 
PHP:
<?php

$my100 = 53814; // Die 100%
$calc  = 1234; // Diesen Wert wollen wir in einem Balken anzeigen.

$calc = round(100 / $my100 * $calc);

echo '<div style="background-color: red; overflow: hidden; width: '.$calc.'%; height: 3px;"></div>';

?>

?
 
Werbung:
Sehr geil!
DANKE

Jetzt kann ich ja sagen,
PHP:
switch ($prozent) {
    case 0: case 15:
        $farbe = "rot";
        break;
    case 15: case 30:
        $farbe = "dunkelrot";
        break;
    case 30: case 45:
        $farbe = "braun";
        break;
    case 45: case 60:
        $farbe = "baige";
        break;
    case 60: case 75:
            $farbe = "olivegruen";
        break;
    case 75: case 90:
        $farbe = "dunkelgruen";
        break;
    case 90: case 100:
        $farbe = "gelbgruen";
        break;
    default:
        $farbe = "lila";
    }

Wie mache ich das, wenn es dann die farben bei bestimmten Prozenten machen soll?

MfG Marcel
 
Dann erweiterst du es einfach nen bischen:

PHP:
echo '<div style="background-color: ' .$farbe. '; overflow: hidden; width: '.$calc.'%; height: 3px;"></div>';
 
Werbung:
jap des weiss ich ja, aber wie mache ich das mit der switsch schleife?

nehme ich da als
case
0: case 15:
$farbe = "rot";

anstatt des "rot" nehme ich den Farbcode oder?

MfG Marcel
 
$farbe = red;

Dann funktioniert das ganze auch ohne den Color-Code. Würd dir aber die Colorcodes vorschlagen. -> $farbe = #FF0000; als Beispiel.

Switch musst du somit logischerweise über der Ausgabe des Balkens noch haben.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben