Ankündigung

Einklappen
Keine Ankündigung bisher.

pChart-Klasse Fehler bei parsing

Einklappen

Neue Werbung 2019

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

  • pChart-Klasse Fehler bei parsing

    So ich komm nicht mehr so recht weiter und hab auch keine Lösung gefunden.

    Ich fahre:

    - Ubuntu 10.04 LTS (Lucid)
    - php5 -> 5.3.2-1ubuntu4.5
    - php5-gd -> 5.3.2-1ubuntu4.5

    Es handelt sich um die php-class pChart.

    Ich habe ein einfaches Beispiel von der sourceforge HP genommen:

    Die Klasse benötigt GD-Lib support.
    Hab ich überprüft:
    Code:
    GD Support     enabled
    GD Version     2.0
    FreeType Support     enabled
    FreeType Linkage     with freetype
    FreeType Version     2.3.11
    T1Lib Support     enabled
    GIF Read Support     enabled
    GIF Create Support     enabled
    JPEG Support     enabled
    libJPEG Version     6b
    PNG Support     enabled
    libPNG Version     1.2.42
    WBMP Support     enabled
    Hier das Beispiel:

    PHP-Code:
            <?php
     
    /*
         Example1 : A simple line chart
     */

     // Standard inclusions
     
    include("pChart/pData.class");
     include(
    "pChart/pChart.class");

     
    // Dataset definition
     
    $DataSet = new pData;
     
    $DataSet->ImportFromCSV("Sample/bulkdata.csv",",",array(1,2,3),FALSE,0);
     
    $DataSet->AddAllSeries();
     
    $DataSet->SetAbsciseLabelSerie();
     
    $DataSet->SetSerieName("January","Serie1");
     
    $DataSet->SetSerieName("February","Serie2");
     
    $DataSet->SetSerieName("March","Serie3");

     
    // Initialise the graph
     
    $Test = new pChart(700,230);
     
    $Test->setFontProperties("Fonts/tahoma.ttf",8);
     
    $Test->setGraphArea(60,30,680,200);
     
    $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
     
    $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);
     
    $Test->drawGraphArea(255,255,255,TRUE);
     
    $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),5,150,150,150,TRUE,0,2);
     
    $Test->drawGrid(4,TRUE,230,230,230,50);

     
    // Draw the 0 line
     
    $Test->setFontProperties("Fonts/tahoma.ttf",6);
     
    $Test->drawTreshold(0,143,55,72,TRUE,TRUE);

     
    // Draw the line graph
     
    $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
     
    $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255);

     
    // Finish the graph
     
    $Test->setFontProperties("Fonts/tahoma.ttf",8);
     
    $Test->drawLegend(65,35,$DataSet->GetDataDescription(),255,255,255);
     
    $Test->setFontProperties("Fonts/tahoma.ttf",10);
     
    $Test->drawTitle(60,22,"example 1",50,50,50,585);
     
    $Test->Render("example1.png");
    ?>
    Doch wenn ich es nun test will passiert nichts es wird keine example1.png erzeugt.

    Dann versucht mal über die Komandozeile zu schauen ob man was sieht aber da werd ich leider nicht schlau drauß:
    Code:
    /var/www/x$ php -f ./index.php
    PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
    PHP Notice:  Uninitialized string offset: 0 in /var/www/x/pChart/pData.class on line 116
    PHP Stack trace:
    PHP   1. {main}() /var/www/x/index.php:0
    PHP   2. pData->ImportFromCSV() /var/www/x/index.php:12
    PHP   3. pData->AddPoint() /var/www/x/pChart/pData.class:100
    PHP Notice:  Uninitialized string offset: 1 in /var/www/x/pChart/pData.class on line 116
    PHP Stack trace:
    PHP   1. {main}() /var/www/x/index.php:0
    PHP   2. pData->ImportFromCSV() /var/www/x/index.php:12
    PHP   3. pData->AddPoint() /var/www/x/pChart/pData.class:100
    Und hier noch mal die pData.class

    PHP-Code:
    <?php
     
    /*
         pData - Simplifying data population for pChart
         Copyright (C) 2008 Jean-Damien POGOLOTTI
         Version  1.13 last updated on 07/24/08

         http://pchart.sourceforge.net

         This program is free software: you can redistribute it and/or modify
         it under the terms of the GNU General Public License as published by
         the Free Software Foundation, either version 1,2,3 of the License, or
         (at your option) any later version.

         This program is distributed in the hope that it will be useful,
         but WITHOUT ANY WARRANTY; without even the implied warranty of
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         GNU General Public License for more details.

         You should have received a copy of the GNU General Public License
         along with this program.  If not, see <http://www.gnu.org/licenses/>.

         Class initialisation :
          pData()
         Data populating methods :
          ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1)
          AddPoint($Value,$Serie="Serie1",$Description="")
         Series manipulation methods :
          AddSerie($SerieName="Serie1")
          AddAllSeries()
          RemoveSerie($SerieName="Serie1")
          SetAbsciseLabelSerie($SerieName = "Name")
          SetSerieName($Name,$SerieName="Serie1")
          removeSerieName($SerieName)
          removeAllSeries()
         Data retrieval methods :
          GetData()
          GetDataDescription()
     */

     /* pData class definition */
     
    class pData
      
    {
       var 
    $Data;
       var 
    $DataDescription;

       function 
    pData()
        {
         
    $this->Data "";
         
    $this->DataDescription "";
         
    $this->DataDescription["Position"] = "Name";
        }

       function 
    ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1)
        {
         
    $handle = @fopen($FileName,"r");
         if (
    $handle)
          {
           
    $HeaderParsed FALSE;
           while (!
    feof($handle))
            {
             
    $buffer fgets($handle4096);
             
    $buffer str_replace(chr(10),"",$buffer);
             
    $buffer str_replace(chr(13),"",$buffer);
             
    $Values split($Delimiter,$buffer);

             if ( 
    $buffer != "" )
              {
               if ( 
    $HasHeader == TRUE && $HeaderParsed == FALSE )
                {
                 if ( 
    $DataColumns == -)
                  {
                   
    $ID 1;
                   foreach(
    $Values as $key => $Value)
                    { 
    $this->SetSerieName($Value,"Serie".$ID); $ID++; }
                  }
                 else
                  {
                   
    $SerieName "";

                   foreach(
    $DataColumns as $key => $Value)
                    
    $this->SetSerieName($Values[$Value],"Serie".$Value);
                  }
                 
    $HeaderParsed TRUE;
                }
               else
                {
                 if ( 
    $DataColumns == -)
                  {
                   
    $ID 1;
                   foreach(
    $Values as $key => $Value)
                    { 
    $this->AddPoint(intval($Value),"Serie".$ID); $ID++; }
                  }
                 else
                  {
                   
    $SerieName "";
                   if ( 
    $DataName != -)
                    
    $SerieName $Values[$DataName];

                   foreach(
    $DataColumns as $key => $Value)
                    
    $this->AddPoint($Values[$Value],"Serie".$Value,$SerieName);
                  }
                }
              }
            }
           
    fclose($handle);
          }
        }

       function 
    AddPoint($Value,$Serie="Serie1",$Description="")
        {
         if (
    is_array($Value) && count($Value) == 1)
          
    $Value $Value[0];

         
    $ID 0;
         for(
    $i=0;$i<=count($this->Data);$i++)
          { if(isset(
    $this->Data[$i][$Serie])) { $ID $i+1; } }

         if ( 
    count($Value) == )
          {
           
    $this->Data[$ID][$Serie] = $Value;
           if ( 
    $Description != "" )
            
    $this->Data[$ID]["Name"] = $Description;
           elseif (!isset(
    $this->Data[$ID]["Name"]))
            
    $this->Data[$ID]["Name"] = $ID;
          }
         else
          {
           foreach(
    $Value as $key => $Val)
            {
             
    $this->Data[$ID][$Serie] = $Val;
             if (!isset(
    $this->Data[$ID]["Name"]))
              
    $this->Data[$ID]["Name"] = $ID;
             
    $ID++;
            }
          }
        }

       function 
    AddSerie($SerieName="Serie1")
        {
         if ( !isset(
    $this->DataDescription["Values"]) )
          {
           
    $this->DataDescription["Values"][] = $SerieName;
          }
         else
          {
           
    $Found FALSE;
           foreach(
    $this->DataDescription["Values"] as $key => $Value )
            if ( 
    $Value == $SerieName ) { $Found TRUE; }

           if ( !
    $Found )
            
    $this->DataDescription["Values"][] = $SerieName;
          }
        }

       function 
    AddAllSeries()
        {
         unset(
    $this->DataDescription["Values"]);

         if ( isset(
    $this->Data[0]) )
          {
           foreach(
    $this->Data[0] as $Key => $Value)
            {
             if ( 
    $Key != "Name" )
              
    $this->DataDescription["Values"][] = $Key;
            }
          }
        }

       function 
    RemoveSerie($SerieName="Serie1")
        {
         if ( !isset(
    $this->DataDescription["Values"]) )
          return(
    0);

         
    $Found FALSE;
         foreach(
    $this->DataDescription["Values"] as $key => $Value )
          {
           if ( 
    $Value == $SerieName )
            unset(
    $this->DataDescription["Values"][$key]);
          }
        }

       function 
    SetAbsciseLabelSerie($SerieName "Name")
        {
         
    $this->DataDescription["Position"] = $SerieName;
        }

       function 
    SetSerieName($Name,$SerieName="Serie1")
        {
         
    $this->DataDescription["Description"][$SerieName] = $Name;
        }

       function 
    removeSerieName($SerieName)
        {
         if ( isset(
    $this->DataDescription["Description"][$SerieName]) )
          unset(
    $this->DataDescription["Description"][$SerieName]);
        }

       function 
    removeAllSeries()
        {
         foreach(
    $this->DataDescription["Values"] as $Key => $Value)
          unset(
    $this->DataDescription["Values"][$Key]);
        }

       function 
    GetData()
        {
         return(
    $this->Data);
        }

       function 
    GetDataDescription()
        {
         return(
    $this->DataDescription);
        }
      }
    ?>
    Ich weis nicht wo mein Fehler liegt.

    Ich danke schon vielmals im Vorraus.

    Wenn ihr noch Informationen benötigt...

    Gruß ruler


  • #2
    uh - da musst du ja alles per Hand stricken ...

    wirf mal mehr als 1 Blick auf libchart ...das enthält wenigstens keinen deprecated Code ..

    andererseits - der stolpert über deine CSV-Daten ...

    kannst du deine CSV-Daten mal angeben / exemplarisch ! .....
    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

    Kommentar


    • #3
      Zitat von eagle275 Beitrag anzeigen
      wirf mal mehr als 1 Blick auf libchart ...das enthält wenigstens keinen deprecated Code
      .... hier ist mal wieder genauer lesen angesagt ....
      pChart enthält auch keinen deprecated code...
      PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
      /etc/php5/cli/conf.d/mcrypt.ini Das hat exakt nix mit pChart zu tun und auch nichts mit dem Fehler.
      sigpic

      Kommentar


      • #4
        Hui schnelle Antwort

        das ist der Inhalt von bulkdata.csv

        Code:
        1,0,1,0.5
        
        2,1.204119983,4,2
        
        3,4.294091292,9,4.5
        
        4,9.632959861,16,8
        
        5,17.47425011,25,12.5
        
        6,28.01344501,36,18
        
        7,41.40980396,49,24.5
        
        8,57.79775917,64,32
        
        9,77.29364326,81,40.5
        
        10,100,100,50
        
        11,126.0085149,121,60.5
        
        12,155.4020994,144,72
        
        13,188.2564265,169,84.5
        
        14,224.641095,196,98
        
        15,264.6205333,225,112.5
        
        16,308.2547156,256,128
        
        17,355.5997383,289,144.5
        
        18,406.7082917,324,162
        
        19,461.6300499,361,180.5
        
        20,520.4119983,400,200
        libchart is sicher auch was sieht aber nich so schick aus.

        Und ich will nicht was anderes durchprobieren weil das jetzt nicht will.

        Und es gibt immer ne Lösung

        Das Problem ist einfach, dass ich bis jetzt nichts dran verändert habe.
        Alle Anforderungen erfüllt sind. (laut phpinfo)
        Sprich php auch mit GD-Lib gelinkt compiliert ist.

        i-wo muss doch der haken sein

        gruß

        Kommentar


        • #5
          hm .. mein verdacht .. dreh mal error-reporting hoch , dann entferne das @ von der Zeile

          $handle = @fopen($FileName,"r");

          und schau mal , ob "der" deine csv überhaupt findet

          und wegen deprecated .. ich war davon ausgegangen, dass mcrypt auch mit dem chart-kram kam ...
          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

          Kommentar


          • #6
            Was hat denn mcrypt in einer Chartlib verloren? (frage aus reiner Neugier)
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar


            • #7
              meinst du mich ? keine ahnung - ich hab die Fehlermeldung halt komplett mit seinem Chart-Teil in Verbindung gebracht ...
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

              Kommentar


              • #8
                Das hat nichts mit pChart zu tun. Das liegt einfach daran, dass er die Kommandozeile aufruft. PHP lädt dann entsprechend Module und dabei tritt der Fehler auf. Den Fehler gibt es nicht nur in mcrypt, sondern auch in vielen anderne Modulen

                Mein Terminal spuckt z.B. das folgende aus:
                Code:
                root@oec-server:~# php
                PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imagick.ini on line 1 in Unknown on line 0
                PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
                PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
                PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mhash.ini on line 1 in Unknown on line 0
                PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/mhash.so' - /usr/lib/php5/20090626/mhash.so: cannot open shared object file: No such file or directory in Unknown on line 0
                sigpic

                Kommentar

                Lädt...
                X