Ankündigung

Einklappen
Keine Ankündigung bisher.

Warum möchte mein Diagramm nicht dargestellt werden?

Einklappen

Neue Werbung 2019

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

  • Warum möchte mein Diagramm nicht dargestellt werden?

    Hi,

    ich würde gerne meine Nutzerzahlen grafisch in einem Diagram darstellen. Habe Monate damit verbraucht ein geeignetes Tutorial zu finden, habs dann endlich gefunden, es ging auch alles, bis ich am Umstrukturieren der Ordner und Dateien war...

    Jetzt, wieder Monate später, finde ich das Tutorial nicht mehr... Fehlermeldung gibt es auch keine, anscheinend funktioniert alles. Einzige Fehlermeldung bekomme ich auf der Seite selbst: The image [...] can not be displayed because it contains errors. Aber welche errors weiß ich nicht, steht nichts...

    code zum Erstellen des Diagrams:
    PHP-Code:
    header("Content-type: image/png");
            
    $imgWidth '750';
            
    $imgHeight '500';

            
    $theImage imagecreate($imgWidth$imgHeight);
            
    $backgroundcolor imagecolorallocate($theImage000);
            
    $details imagecolorallocate($theImage255255255);
            
    $green imagecolorallocate($theImage64,2550);

            
    # title
            
    $text "Daily Views";
            
    $fontsize 5;
            
    imagestring($theImage$fontsize00$text$green);

            
    # subtitle
            
    $text "2020/12/28 - ".date("Y/m/d",strtotime("-1 days"));
            
    $fontsize 4;
            
    imagestring($theImage$fontsize025$text$green);

            
    #subsubtitle
            
    require_once(__DIR__ '/../../functions/select/diagram/values.php');
            
    $values selectValuesDiagram();

            
    $maxHeight 0//nicht sicher, ob diese Zeile stimmt; mir kam der Fehler, dass maxheight nicht definiert ist, also habe ich nachgeschaut und nach meiner Logik ist es 0, da danach geschaut wird, ob 0<views der aktuellen zeile ist und wenn ja, wird maxheight vergrößert... Jetzt kommt nicht mal mehr diese Fehlermeldung, es kommt eiinfach gar nichts...
            
    $countBalken count($values);
            for(
    $i=0;$i<$countBalken;$i++){
                if(
    $maxHeight $values[$i]['views']){
                    
    $maxHeight $values[$i]['views'];
                }
            }

            
    $text "Highest Hit: ".$maxHeight;
            
    $fontsize 3;
            
    imagestring($theImage$fontsize050$text$details);

            
    #hits yesterday
            
    require_once(__DIR__ '/../../functions/select/diagram/hits_yesterday.php');
            
    $yesterday selectHitsYesterday();
            
    $text date("Y/m/d",strtotime("-1 days")).': '.$yesterday[0]['views'];
            
    $fontsize 3;
            
    imagestring($theImage$fontsize075$text$details);

            
    #hits today
            
    require_once(__DIR__ '/../../functions/select/diagram/hits_today.php');
            
    $today selectHitsToday();
            
    $text "Today: ".$today[0]['dailyview'];
            
    $fontsize 3;
            
    imagestring($theImage$fontsize0100$text$details);

            
    # Raster
            
    $imgRWidth '725';
            
    $imgRHeight '425';
            
    $pxRaster '45'#Größe des Rasters
            
    $pxWidth round($imgRWidth $pxRaster0);
            for(
    $i=1$i<$pxWidth$i++){
                
    imageline($theImage50$i*$pxRaster$imgRWidth$i*$pxRaster$details); #horizontal
            
    }

            
    $dynWidth round(($imgRWidth-2) / ($countBalken-1), 0);
            @
    $dynHeight = ($imgRHeight-1) / $maxHeight;
            for (
    $i=0$i<$countBalken$i++){
                
    $aktNewSize = @round($dynHeight $values[$i]['views']);
                
    $aktNewSize2 = @round($dynHeight $values[$i+1]['views']);
                if(
    $i+$countBalken){
                    
    imageline($theImage$i*$dynWidth+50, ($imgRHeight-$aktNewSize)+69, ($i+1)*$dynWidth+50, ($imgRHeight-$aktNewSize2)+69$green);
                }
            }

            
    imagepng($theImage);
            
    imagedestroy($theImage); 
    Die DB-Abfragen, welche included sind (jetzt mit __DIR__^^) funktionieren auch. Ich hab einfach keinen Plan mehr ._.

  • #2
    Schon mal geschaut, was überhaupt im HTTP-Response drin steht?

    Kommentar


    • #3
      Wenn du den Header auskommentierst, siehst du zu 99% eine Fehlermeldung

      Kommentar


      • #4
        Zitat von hellbringer Beitrag anzeigen
        Schon mal geschaut, was überhaupt im HTTP-Response drin steht?
        Nein, wo finde ich das? Kenne mich eben nicht so aus, bin noch am lernen...

        ----------
        EDIT:
        Habe jetzt etwas gegoogelt und mit var_dump(headers_list()); den header ausgegeben. Dort steht folgendes:
        string(38 ) "Expires: Thu, 19 Nov 1981 08:52:00 GMT" [1]=> string(50) "Cache-Control: no-store, no-cache, must-revalidate" [2]=> string(16) "Pragma: no-cache" [3]=> string(38 ) "Content-type: text/html; charset=UTF-8"

        Ich vermute das heißt, dass kein Cache zur Verfügung steht und deshalb ein Fehler kommt, weil der Server das Bild nirgends speichern kann... Kann das stimmen? Und wenn ja, wie stelle ich den Cache ein?

        Kommentar


        • #5
          Zitat von Soulrider Beitrag anzeigen
          Wenn du den Header auskommentierst, siehst du zu 99% eine Fehlermeldung
          Header auskommentiert und keine Fehlermeldung, dafür aber ganz komische Zeichen auf der Seite...

          In etwa so was:

          �PNG IHDR���@9 PLTE���@��x�� pHYs���+ �IDATx��M��:�KH��R{��_�Z�����j�}�Ū��ڣ�f�ɯ�s�I�7�� �>}���9�q�*@<���r��WRU��6�T�b��yq�v�\

          Kommentar


          • #6
            Du solltest dir die Binärdaten genau anschauen, ob sie wirklich gültige PNG-Daten beinhalten:

            https://en.wikipedia.org/wiki/Portab...cs#File_format

            Natürlich sinnvollerweise in einem HEX-Viewer und nicht in einem Browser.

            Kommentar


            • #7
              Zitat von hellbringer Beitrag anzeigen
              Du solltest dir die Binärdaten genau anschauen, ob sie wirklich gültige PNG-Daten beinhalten:

              https://en.wikipedia.org/wiki/Portab...cs#File_format

              Natürlich sinnvollerweise in einem HEX-Viewer und nicht in einem Browser.
              Das macht Sinn. Aber wie kann ich ein Bild, das von PHP erstellt wird in einem HEX-Editor ansehen? Gibt es da Software, bei der ich den PHP-Code reinstellen kann, der convertiert das zu einem Bild und zeigt mir dann die HEX an; oder wie funktioniert das? Weil das Bild wird nirgednwo gespeichert; bzw. ich finde es nicht...

              Kommentar


              • #8
                Ok, habe jetzt mal die Seite im Browser inspiziert und dort steht folgender Fehler: GET http://seitenadresse.endung/favicon.ico 404 not found

                Was ist dieses favicon.ico?

                Kommentar


                • #9
                  Zitat von Dissi Beitrag anzeigen
                  Das macht Sinn. Aber wie kann ich ein Bild, das von PHP erstellt wird in einem HEX-Editor ansehen?
                  Mit einem HTTP-Client als Datei speichern und dann im HEX-Editor öffnen.

                  In Chrome kann man einen Rechtsklick auf den Request machen und mit "Save as..." als Datei speichern.

                  Zitat von Dissi Beitrag anzeigen
                  Was ist dieses favicon.ico?
                  https://de.wikipedia.org/wiki/Favicon

                  Kommentar


                  • #10
                    Es ist auch gut möglich, dass du irgendwo in den "require" files ein Leerschlag um falschen Platz drin hast.

                    Kommentar


                    • #11
                      Oder irgendeine PHP-Datei ist aus Versehen mit BOM abgespeichert. Da hilft nur debuggen. Wenn ich mit den GD-Funktionen arbeiten muss binde ich mir immer diese Debug-Klasse ein, welche mir auch Vorschaubilder meiner IMG-Resource anzeigen kann wie in diesen Beispiel hier.(Header auskommentiert, Error-Reporting aktiviert).

                      Kommentar


                      • #12
                        Zitat von Dissi Beitrag anzeigen
                        Ok, habe jetzt mal die Seite im Browser inspiziert und dort steht folgender Fehler: GET http://seitenadresse.endung/favicon.ico 404 not found

                        Was ist dieses favicon.ico?
                        https://php-de.github.io/jumpto/headers-already-sent/

                        das favicon ist ja wohl nicht in dem bild - und fortgeschritten ?

                        Kommentar

                        Lädt...
                        X