Sauberer Code???

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sauberer Code???

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

    ?>
    man sollte schon PHP können, und mathe aufgepasst haben
    THX
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

  • #2
    du solltest noch korrekt einrücken .... dann siehts schon besser aus.

    ansonsten habe ich nur überflogen... macht einen guten eindruck und
    ich käme wahrscheinlich damit klar. eben bis auf das einrücken. ich
    habe nur // for oder // while gesehen und musste erst 'suchen' wo
    die nun anfangen....
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      hmm, einrücken? och ne, das mache ich eigentlich nie. da muss man ständig meterweise nach rechts scrollen, um was zu finden. ich persönlich finde es so besser. es steht ja immer dahinter welche for() / while() da geschlossen wird.

      PS kann mir mal einer sagen, dass die funktion und das ergbnis einfach genial sind ???
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        Kannst dir deine Schokolade bei mir abholen für das Script.

        Ich würde aber noch auf Rechtschreibung hin das Script überprüfen. Macht einen besseren Eindruck. Und das Einrücken ist auch besser. Sieht aber wirklich gut aus.
        *winks*
        Gilbert
        ------------------------------------------------
        Hilfe für eine Vielzahl von Problemen!!!
        http://www.1st-rootserver.de/

        Kommentar


        • #5
          ok, die rechtschreibung solle etwas besser sein /me weiss das. aber das ding ist ja auch noch ned fertig. wer genua hinguckt, sieht, dass in der untersten ebene nicht alles genau passt

          gegen das einrücken sträube ich mich jedoch kommt ned inne tüte

          ich hätte leiber ein eis. ist zu warm für schoko.
          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #6
            OffTopic:
            Auch noch ansprüche stellen, was er für eine belohnung bekommt.

            Und ich würde naoch auf die Global zurückgreifen.
            Statt
            $DOCUMENT_ROOT lieber $_SERVER[DOCUMENT_ROOT]
            *winks*
            Gilbert
            ------------------------------------------------
            Hilfe für eine Vielzahl von Problemen!!!
            http://www.1st-rootserver.de/

            Kommentar


            • #7
              @wotan nö _SERVER & _SESSION werden per extract() dazu überredet immer v.h. zu sein
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #8
                Re: Sauberer Code???

                PHP-Code:
                ##### include files

                include "../incs/functions.php";
                include 
                "../incs/functions.stats.php";
                include 
                "../../both/vars.php";
                include 
                "../../both/db.php"
                Den Bereich würde ich aber noch ändern!

                PHP-Code:
                ##### include files

                include "$_SERVER[DOCUMENT_ROOT]/incs/functions.php";
                include 
                "$_SERVER[DOCUMENT_ROOT]/incs/functions.stats.php";
                include 
                "$_SERVER[DOCUMENT_ROOT]/both/vars.php";
                include 
                "$_SERVER[DOCUMENT_ROOT]/both/db.php"
                Sollte natürlich auf die Pfade angpasst sein.
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #9
                  was spricht gegen ../../ ???
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    Probleme bei den Aufrufen. Die du bei $_SERVER[DOCUMENT_ROOT] nicht hast.
                    Da kannst du die Ordner auch ganz anders anlegen. Brauchst also nicht auf ./ , ../ und ../../ achten und es können sich keine Fehler einschleichen beim schreiben. Da du ja immer den ganzen Pfad angibtst.
                    Oder aber nur eine Datei, mit allen zu ladenen Dateien erstellen und dies dann überall laden. So brauchst du nur eine Datei ändern, wenn sich mal die Pfade ändern.
                    *winks*
                    Gilbert
                    ------------------------------------------------
                    Hilfe für eine Vielzahl von Problemen!!!
                    http://www.1st-rootserver.de/

                    Kommentar


                    • #11
                      mysql querys sollte man auch korrekt einrücken und schlüsselwörter gross schreiben, macht das ganze wesentlich übersichtlicher..

                      beispiel:
                      PHP-Code:
                                   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 

                      //edit: naja, der forencode interpretiert das ein bisschen falsch :/
                      EDIT:
                      php.tags by wotan
                      Zuletzt geändert von Wotan; 12.07.2003, 17:00.

                      Kommentar


                      • #12
                        @rythms

                        Wenn du die PHP-Tags benutzt hättest wär es gegangen.
                        *winks*
                        Gilbert
                        ------------------------------------------------
                        Hilfe für eine Vielzahl von Problemen!!!
                        http://www.1st-rootserver.de/

                        Kommentar


                        • #13
                          Original geschrieben von Wotan
                          Probleme bei den Aufrufen. Die du bei $_SERVER[DOCUMENT_ROOT] nicht hast.
                          Da kannst du die Ordner auch ganz anders anlegen. Brauchst also nicht auf ./ , ../ und ../../ achten und es können sich keine Fehler einschleichen beim schreiben. Da du ja immer den ganzen Pfad angibtst.
                          Oder aber nur eine Datei, mit allen zu ladenen Dateien erstellen und dies dann überall laden. So brauchst du nur eine Datei ändern, wenn sich mal die Pfade ändern.
                          Liegt schon etwas länger hier rum: Aber was mache ich, wenn ich das ganze auf Linux Ebene ausführe und $_SERVER[DOCUMENT_ROOT] nicht gesetzt ist? Ich habe bisher keine entsprechende Variable gefunden, die selbiges leistet
                          verantwortlich für Elygor - Das kostenlose Browserspiel

                          Kommentar


                          • #14
                            $_SERVER['DOCUMENT_ROOT'] sollte gesetzt sein.

                            ich arbeite ausschliesslich im webbereich mit linux und o.g. var ist immer gesetzt!

                            schaue dir nochmal diese ausgabe(n) an ...

                            PHP-Code:
                            <?php 

                            header
                            ('content-type: text/plain');

                            echo 
                            'dRoot: '$_SERVER['DOCUMENT_ROOT']. "\n\n";
                            print_r($_SERVER);

                            ?>
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Danke für die schnelle Antwort, aber auf unserem Server ist es nicht gesetzt. Ein Konfigurationsproblem? Wenn ich die Datei im Browser öffne steht was drin, führe ich es mit php auf Linuxebene aus ist die variable leer
                              Zuletzt geändert von sEeb; 14.11.2008, 13:07.
                              verantwortlich für Elygor - Das kostenlose Browserspiel

                              Kommentar

                              Lädt...
                              X