Hi!
Bei einem aktuellen Projekt bekam ich nun die Auflage, dass mein Code so aufgebaut sein muss, dass jeder Profi ihn verstehen, wen ich mal den öffel abgebe, und das projekt nimmer betreuen kann.
der folgende code erzeugt eine grafik, die so aussieht, wie in dem link: Beispeil ich möchte jetzt von den profis gerne wissen, ob sie damit klarkommen würden:
man sollte schon PHP können, und mathe aufgepasst haben
THX
Bei einem aktuellen Projekt bekam ich nun die Auflage, dass mein Code so aufgebaut sein muss, dass jeder Profi ihn verstehen, wen ich mal den öffel abgebe, und das projekt nimmer betreuen kann.
der folgende code erzeugt eine grafik, die so aussieht, wie in dem link: Beispeil ich möchte jetzt von den profis gerne wissen, ob sie damit klarkommen würden:
PHP-Code:
<?
session_start();
##### include files
include "../incs/functions.php";
include "../incs/functions.stats.php";
include "../../both/vars.php";
include "../../both/db.php";
##### DB Start
dbcon($db1);
dbsel($db1);
##### Header etc.
header ("Content-type: image/png");
$im = @ImageCreate (900, 600)
or die ("<p class=\"error\">
Die Erzeugung der Grafik wurde durch den Server abgebrochen!
</p>
");
################# Farben generieren
$background_color = ImageColorAllocate ($im, 212, 208, 200);
$text_color = ImageColorAllocate ($im, 0, 0, 0);
$gruen = ImageColorAllocate ($im, 0, 196, 0);
$rot = ImageColorAllocate ($im, 255, 0, 0);
$blau = ImageColorAllocate ($im, 0, 0, 255);
$pink = ImageColorAllocate ($im, 255, 0, 255);
$orange = ImageColorAllocate ($im, 255, 90, 40);
$gelb = ImageColorAllocate ($im, 255, 255, 0);
$grau = ImageColorAllocate ($im, 140, 140, 140);
################ Grundaufbau
imageline ($im, 5,10,250,10,$text_color); // erste querlinie
imagettftext ($im, 10, 0, 255, 15, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", "Meine Umsatzziele");
imageline ($im, 370,10,895,10,$text_color); // erste querlinie
################ Eignene Umsatzziele einlesen
$se = dbque(" select a.zieleigenes,a.zieldatum,sum(b.umsatz) as umsatz
from $db1[prefix]_umsatzziele a
LEFT OUTER JOIN $db1[prefix]_kunden e on e.iduser = a.iduser
LEFT OUTER JOIN $db1[prefix]_umsaetze b ON month(a.zieldatum)=month(b.buchungsdatum) and year(a.zieldatum)=year(b.buchungsdatum) and b.idkunde=e.idkunde and b.gebucht=1
where a.zieldatum <= now()
and a.iduser=$get[iduser]
group by month(a.zieldatum)
order by a.zieldatum
limit 12
");
$found = dbnum($se);
#################### Totalen Zusammenbruch verhindern
/* Kann eigentlich nicht passieren, da der Button zum erzeugen nicht angezeigt wird,
wenn nicht genuf Daten da sind! */
if($found < 2) { die("Keine Daten zur Verwertung gefunden! Es muessen Daten fuer mind. 2 Monate vorliegen!"); }
################# X-Y Start Positionen
$mPos = 150; // x-Position des Monatsnamens
$maxMoney = 0; // Maximaler Umsatzwert ( Ziel oder Tatsache )
$zielArray = array();
$umsatzArray = array();
$i = 0;
################# Daten auswerten und in array() packen // Zeitspannen ausgeben
while($ro = dbfetch($se)) {
####### Datum in X
$roText = date('m-Y',strtotime($ro[zieldatum]));
imagettftext ($im, 9, 0, $mPos, 60, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", "$roText");
imageline ($im, $mPos+30,75,$mPos+30,500,$grau); // <-- Monatslinie in der Vertikalen
$mPos = $mPos+60;
####### Maximalwerte ermitteln
if($ro[zieleigenes] > $maxMoney) { $maxMoney = $ro[zieleigenes]; }
if($ro[umsatz] > $maxMoney) { $maxMoney = $ro[umsatz]; }
if(!isset($minMoney)) { $minMoney = $ro[zieleigenes]; }
if($ro[zieleigenes] < $minMoney) { $minMoney = $ro[zieleigenes]; }
if($ro[umsatz] < $minMoney) { $minMoney = $ro[umsatz]; }
$zielArray[$i] = $ro[zieleigenes];
$umsatzArray[$i] = $ro[umsatz];
$i++;
} // <-- While eigene Ziele
################################## Team Daten einlesen
$se = dbque(" select a.zielteam,a.zieldatum
from $db1[prefix]_umsatzziele a
where iduser=$get[iduser]
and a.zieldatum <= now()
group by month(a.zieldatum)
order by a.zieldatum
limit 12
");
############## Daten des Teams ( vordefinition )
$found = dbnum($se);
$teamArray = array();
$teamsatzArray = array();
$j = 0;
############# Array füllen // wie bei eigenen Daten inkl Mx-Werte
while($rw = dbfetch($se)) {
$teamArray[$j] = $rw[zielteam];
$teamsatzArray[$j] = teamumsatz($get[iduser],$rw[zieldatum]);
if($rw[zielteam] > $maxMoney) { $maxMoney = $rw[zielteam]; }
if($teamsatzArray[$j] > $maxMoney) { $maxMoney = $teamsatzArray[$j]; }
if($rw[zielteam] < $minMoney) { $minMoney = $rw[zielteam]; }
if($teamsatzArray[$j] < $minMoney) { $minMoney = $teamsatzArray[$j]; }
$j++;
$GLOBALS[satz] = 0; // <-- Umsatz "zwischenlagern"
} // <-- While REAM
################################## ein paar linien :)
imageline ($im, 5,65,895,65,$text_color); // zweite querlinie
imageline ($im, 145,50,145,585,$text_color); // erste vertikale
################################## Min / Max ausgeben
imagettftext ($im, 9, 0, 5, 100, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", hunderter(round($maxMoney)).".-");
imageline ($im, 160,110,870,110,$grau); // Querlinie MaxMoney
imagettftext ($im, 9, 0, 5, 500, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", hunderter(round($minMoney)).".-");
imageline ($im, 160,460,870,460,$grau); // Querlinie MinMoney
################################### Zahlen / Linien auf Y Achse
####### Startwerte
// Step = 60 Pixel -- 5 x
$YY = 460;
######## Querlinien für Raster erzeugen
for($r = 0; $r<=4; $r++) {
$YY = $YY-60;
imageline ($im, 160,$YY,870,$YY,$grau); // Querlinie MinMoney
} // <-- for linien ziehen
######### Schrite auf X / Y ermitteln
$zwischenwert = $maxMoney-$minMoney;
$zwischenwert = $zwischenwert/7;
$YY =450;
######### Zwischenwerte für Raster einfügen
for($s=1; $s<=6; $s++) {
imagettftext ($im, 9, 0, 5, $YY, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", hunderter(round($zwischenwert*$s)).".-");
$YY = $YY-60;
} // <-- for zahlen schreiben
###############################################################
imageline ($im, 5,520,895,520,$text_color); // erste vertikale
################################### Werte eintragen
######## Schrittlänge ermitteln / festlegen
$step = 390/100;
$prozent = $maxMoney/100;
$x = 180;
######## Vars. in use
$laenge = $zielArray[0]/$prozent; // Ziel eigen
$laengeT = $teamArray[0]/$prozent; // Ziel team
$laengeU = $umsatzArray[0]/$prozent; // Umsatz eigen
$laengeTU = $teamsatzArray[0]/$prozent; // Umsatz Team
$pos = $step*$laenge; // Start eigenes Ziel
$posT = $step*$laengeT; // Start Team Ziel
$posU = $step*$laengeU; // Start eigener Umsatz
$posTU = $step*$laengeTU; // Start Team Umsatz
$alt = round(480-$pos); // Start eigenes Ziel
$altT = round(480-$posT); // Start Team Ziel
$altU = round(480-$posU); // Start eigener Umsatz
$altTU = round(480-$posTU); // Start Team Umsatz
########## Alle umsatzzahlen in Schleife eintragen
for($k=1; $k<=count($zielArray)-1; $k++) {
########## Positionserwittlung der farbigen Linien
$laenge = $zielArray[$k]/$prozent;
$laengeU = $umsatzArray[$k]/$prozent;
$laengeT = $teamArray[$k]/$prozent;
$laengeTU = $teamsatzArray[$k]/$prozent;
$pos = $step*$laenge;
$posT = $step*$laengeT;
$posU = $step*$laengeU;
$posTU = $step*$laengeTU;
$pos = round(480-$pos);
$posT = round(480-$posT);
$posU = round(480-$posU);
$posTU = round(480-$posTU);
########## Ausgabe der Linien im Raster
imageline ($im, $x,$alt,$x+60,$pos,$blau); // Eigenes Umsatzziel
imageline ($im, $x,$altT,$x+60,$posT,$pink); // Team Umsatzziel
imageline ($im, $x,$altU,$x+60,$posU,$gruen); // Eigener Umsatz
imageline ($im, $x,$altTU,$x+60,$posTU,$gelb); // Team Umsatz
########## Sartposition der nächsten Linie festhalten
$x=$x+60;
$alt = $pos;
$altT = $posT;
$altU = $posU;
$altTU = $posTU;
// break;
} // for
################################### Farben erklären ( kleine Kästchen )
imagefilledrectangle($im, 160,540,170,550,$blau);
imagettftext ($im, 9, 0, 180, 550, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", "Eigenes Umsatzziel");
imagefilledrectangle($im, 160,570,170,580,$gruen);
imagettftext ($im, 9, 0, 180, 580, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", "Eigener Umsatz");
imagefilledrectangle($im, 390,540,400,550,$pink);
imagettftext ($im, 9, 0, 410, 550, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", "Team Umsatzziel");
imagefilledrectangle($im, 390,570,400,580,$gelb);
imagettftext ($im, 9, 0, 410, 580, $text_color, "$DOCUMENT_ROOT/user/incs/arial.ttf", "Team Umsatz");
###################################################
######## Image an Browser senden
ImagePNG ($im);
?>
THX
Kommentar