Ankündigung

Einklappen
Keine Ankündigung bisher.

Brauche Hilfe bei Zetacomponents/Graph

Einklappen

Neue Werbung 2019

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

  • Brauche Hilfe bei Zetacomponents/Graph

    Hallo Gemeinde,

    ich habe mir vor ein paar Jahren auf meiner Synology-Diskstation über PEAR die Zetacomponents installiert, um vorrangig die "Graph" Funktionalität zu verwenden.

    Heute stieß ich auf ein Problem und ich entschloss mich, die Pakete manuell zu aktualisieren.
    Das entpuppte sich als eine sehr schlechte Idee, denn jetzt funktioniert gar nichts mehr.

    Dummerweise ist eine Neuinstallation, bzw. ein Update über PEAR auch nicht mehr möglich, da die Pakete nur noch auf GitHub, bzw. Packagist vorliegen.

    Also habe ich mir kurzerhand den PHP-Composer auf meine Synology gebügelt, um die Pakete darüber neu zu installieren.
    So weit, so erfolgreich.

    Blöderweise weiß ich nun nicht, wie ich mit den Paketen aus der Composer-Installation weiter verfahren soll.
    Die Verzeichnisstruktur ist sehr andersartig, im Vergleich zur "alten" Instalation.

    Ich beginne meine PHP-Scripts folgendermaßen:
    PHP-Code:
    set_include_path"/usr/local/bin/vendor/zetacomponents" PATH_SEPARATOR .  get_include_path());
    require_once 
    "Base/src/base.php";


    function 
    __autoload$className )
    {
            
    ezcBase::autoload$className );

    Hierbei erhalte ich folgende Fehlermeldung:
    Code:
    Fatal error: Couldn't find autoload directory '/usr/local/bin/vendor/zetacomponents/Base/src/../../autoload/' in /usr/local/bin/vendor/zetacomponents/Base/src/base.php on line 222
    Kann mir jemand weiterhelfen?

    Bei der alten Installation waren innnerhalb der Pakete keine "src"-Verzeichnisse vorhanden und es hat den Anschein, als sollten die da auch nicht sein.
    Muss ich mit den Paketen aus dem Composer am Ende noch etwas machen?

    Ich bin mit meinem Latein ehrlich am Ende und könnte mit in den Allerwertesten beißen, dass ich verdammt nochmal nicht die Finger davon gelassen haben.

    Liebe Grüße,
    BJ70

  • #2
    moin, lesen hier ?
    https://php-de.github.io/jumpto/composer/


    PHP-Code:
    require __DIR__ '/vendor/autoload.php'

    Aber<mal was anderes, was ist das für ein PFAD
    /usr/local/bin/vendor/zetacomponents"
    installiesrst du als root ?

    Kommentar


    • #3
      Hallo und danke für die Antwort.

      Okay, ich habe es kapiert.

      Ich bin davon ausgegangen, dass ich, wie bei PEAR die Pakete dort installieren muss, wo PEAR sie hinhaben will.
      ...also dorthin, wo ich als root den composer hin installiert habe.

      Nach Behebung dieses Denkfehlers und dank deines Links (endlich etwas in deutsch)
      habe ich es wieder zum Laufen gebracht.


      DANKE DANKE DANKE


      PS:
      Hast du denn Skills im Umgang mit den Zetacomponents?
      Ich bekomme nämlich nicht hin, wie man der X-Achse Datumswerte übergibt.

      Kommentar


      • #4
        ist ja mal ne konkrrte Frage.
        http://zetacomponents.org/documentat...ml#line-charts
        das suchst du ?

        Kommentar


        • #5
          Ja genau.

          Ich lese meine Werte aus eine SQL-Datenbank aus.
          So, wie ich das interpretiere, brauche ich ein indiziertes Array, wobei der Schlüssel für den Wert der X-Achse und der Wert für das Liniendiagramm ist.

          Hier einmal mein Code:
          Code:
          <?php
          
          require __DIR__ . '/vendor/autoload.php'; 
          
          error_reporting(E_ALL);
          
          // Zum Aufbau der Verbindung zur Datenbank
          define ( 'MYSQL_HOST',      '127.0.0.1' );
          define ( 'MYSQL_BENUTZER',  'root' );
          define ( 'MYSQL_KENNWORT',  '********' );
          define ( 'MYSQL_DATENBANK', 'Heizungsdaten' );
          
          mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
          $mysqli = new mysqli (MYSQL_HOST, 
                                MYSQL_BENUTZER, 
                                MYSQL_KENNWORT, 
                                MYSQL_DATENBANK);
          
          
          $startdate = '2021-01-01 00:00:00';
          $enddate = '2021-12-31 23:59:00';
          
          $query = "SELECT * FROM Werte WHERE `256` BETWEEN '2021-01-01 00:00:00' AND '2021-12-31 23:59:00'";
          //$query = "SELECT * FROM Werte WHERE `256` BETWEEN '2017-02-09 10:00:00' AND '2017-02-09 17:00:00'";
          $result = $mysqli->query($query);
          
          $graph = new ezcGraphLineChart();
          $graph->title = 'Heizkurve Warmwasserkreislauf';
          
          echo '<table border="1">';
          while ($zeile = $result->fetch_array(MYSQLI_ASSOC))
          {
          //var_dump($zeile);
          sscanf($zeile['256'], "%4s-%2s-%2s %8s", $jahr, $monat, $tag, $uhr);
          
          
          $datum[] = date(strtotime($zeile['256']));
          $sollwert[] = $zeile['255'];
          $istwert[] = $zeile['205'];
          $brenner[] = $zeile['209'];
          $vorlauf[] = $zeile['201'];
          $sollheiz[] = $zeile['252'];
          }
          
          $sollwertx = array_combine($datum, $sollwert);
          //var_dump($sollwertx);
          
          $graph->xAxis = ezcGraphChartElementDateAxis();
          $graph->xAxis->dateFormat = 'H:m';
          
          $graph->data['Sollwert Warmwasser'] = new ezcGraphArrayDataSet($sollwertx);
          
          $graph->render( 1920 , 800, date("Y.m.d").'_WW_Heizkurve_xx.svg' );
          $graph->renderToOutput( 800 , 600 );
          
          mysqli_free_result( $result );
          ?>
          Leider endet das alles in folgendem Fehler:
          Code:
          Fatal error: Uncaught Error: Call to undefined function ezcGraphChartElementDateAxis() in .....
          Stack trace: #0 {main} thrown in .....

          Kommentar


          • #6
            Kannst Du mir bitte mal die Function in der Docu finden die das Programm nicht findet ?
            und wieso gibtr es da kein namespace ?

            Kommentar


            • #7
              Habe es hinbekommen.

              In meinem Code fehlte das Wörtchen "new" vor dem Aufruf der Funktion ezcGraphChartElementDateAxis();


              Hier ist übrigens die Dokumentation:
              http://zetacomponents.org/documentation/trunk/Graph/phpdoc/ezcGraphChartElementDateAxis.html


              Was meinst du mit "namespace"?

              Kommentar


              • #8
                Namespaces ist das heute übliche Vorgehen um Namen zu kapseln.

                tomBuilder Neben den fehlenden Namespaces bei dieser Anzahl von Dateien ist mit noch etwas aufgefallen: Die Dateinamen haben keinen Bezug zum Klassennamen. So enthält die Datei line.php die Klasse ezcGraphLineChart.

                Kommentar


                • #9
                  Zitat von Baujahr70 Beitrag anzeigen
                  Habe es hinbekommen.

                  In meinem Code fehlte das Wörtchen "new" vor dem Aufruf der Funktion ezcGraphChartElementDateAxis();


                  Hier ist übrigens die Dokumentation:
                  http://zetacomponents.org/documentation/trunk/Graph/phpdoc/ezcGraphChartElementDateAxis.html

                  ezcGraphChartElementDateAxis kommt dort afaik genau einmal vor.

                  da die docu von PHP documentor erst6ellot wurde, besteht ME die möglichlkeit das es das obcject so nicht mehr gibt .
                  ztudem ist die oben gennante source

                  http://fisheye6.atlassian.com/browse...led.php?r=HEAD

                  jedenfalls bei mir nicht erreichbar.

                  und ja jspit damit freiwillig arbeiten würde ich wohl nicht, nicht nur weil die seite nur über http zu errecihen ist ^^

                  Kommentar

                  Lädt...
                  X