Ankündigung

Einklappen
Keine Ankündigung bisher.

json_encode

Einklappen

Neue Werbung 2019

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

  • json_encode

    Hallo,

    Ich probiere mir einen Graphen von meiner SQL datenbank anzeigen zu lassen:

    Code:
    <?php
    $dataPoints = array();
    //Best practice is to create a separate file for handling connection to database
    try{
    // Creating a new connection.
    // Replace your-hostname, your-db, your-username, your-password according to your database
    $link = new \PDO( 'mysql:host=localhost;dbname=opti;charset=utf8mb4', //'mysql:host=localhost;dbname=canvasjs_db;charset=utf8mb4',
    'root', //'root',
    '', //'',
    array(
    \PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_PERSISTENT => false
    )
    );
    
    $handle = $link->prepare('select x, y from resultaterechts');
    $handle->execute();
    $result = $handle->fetchAll(\PDO::FETCH_OBJ);
    
    foreach($result as $row){
    array_push($dataPoints, array("x"=> $row->x, "y"=> $row->y));
    }
        $link = null;
    }
    catch(\PDOException $ex){
    print($ex->getMessage());
    }
    
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <script>
    window.onload = function () {
    var chart = new CanvasJS.Chart("chartContainer", {
        animationEnabled: true,
        exportEnabled: true,
        theme: "light1", // "light1", "light2", "dark1", "dark2"
        title:{
            text: "PHP Column Chart from Database"
        },
        data: [{
            type: "area", //change type to bar, line, area, pie, etc
            dataPoints: <?php echo json_encode($dataPoints,JSON_NUMERIC_CHECK,JSON_BIGINT_AS_STRING); ?>
        }]
    });
    chart.render();
    }
    </script>
    </head>
    <body>
    <div id="chartContainer" style="height: 370px; width: 100%;"></div>
    <script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
    </body>
    </html>

    Mein Problem ist das meine Daten von der X-Achse falsch angezeigt werden (durch 2 kommas), ich schätze mal weil mein Integer zu gross ist und "JSON_BIGINT_AS_STRING" ändert nichts.

    danke im vorraus

  • #2
    Das sind Tausendertrennzeichen, keine Kommas. Grundsätzlich ist es nicht sehr gescheit ein Datum als Integer zu speichern und auszuliefern, dafür gibt es Datumsformate. Ich kenn jetzt dieses Chartprodukt nicht aber ich bin mir relativ sicher, dass das auch mit einem Datum umgehen kann.
    Ansonsten gibt es evtl. auch eine Möglichkeit die Anzeige der x-Achse anzupassen, dazu müsstest du Dich aber durch die Doku des Charts wühlen.

    Kommentar


    • #3
      Zitat von babyschoco Beitrag anzeigen
      ich schätze mal weil mein Integer zu gross ist .
      Vermutungen sind Käse. Debugge und lass dir zeigen welche Daten übergeben werden. Trenne die Probleme auf und teste separat.
      - Holen der Daten
      - Ausgabe per Javascript
      Übergebe testhalber ein einfaches selbst erstelltes Array an dein Chart-Skript um zu sehen, wie es die Daten haben möchte.


      Kommentar


      • #4
        Das sind Tausendertrennzeichen, keine Kommas. Grundsätzlich ist es nicht sehr gescheit ein Datum als Integer zu speichern und auszuliefern, dafür gibt es Datumsformate. Ich kenn jetzt dieses Chartprodukt nicht aber ich bin mir relativ sicher, dass das auch mit einem Datum umgehen kann.
        Hab es als Datum gespeichert, jetzt kriege ich aber einen leeren Graphen zurück..

        Das sind Tausendertrennzeichen, keine Kommas.
        Ich glaube es sind kommas, weil alle meine Punkte sind auf der Y-Achse ( siehe Bild vom ersten Beitrag)

        Übergebe testhalber ein einfaches selbst erstelltes Array an dein Chart-Skript um zu sehen, wie es die Daten haben möchte.
        Hab ich gemacht und das funktioniert aber sobald ich die grösseren Werte nehme, geht es nicht mehr.

        Kommentar


        • #5
          Mit diesen Werten bekommst du auf der X-Achse eine Zeit/Datumsdarstellung? Halte ich für ein Gerücht. Schau dir die entsprechenden Beispiele in der Chart-Doku an (Beispiel). Da musst du dich schon selber durchwühlen, wie jonas3344 schon geschrieben hat.

          Und dies CanvasJS Chart License solltest du dir auch zu Gemüte ziehen bevor du da weiter Arbeit reinsteckst! Es gibt auch kostenfreie Charmodule.

          Kommentar


          • #6
            Zitat von babyschoco Beitrag anzeigen
            Ich schätze mal weil mein Integer zu gross ist .
            ...
            Ich glaube es sind kommas,
            Zitat von jspit Beitrag anzeigen
            Vermutungen sind Käse.
            Schau in den Quelltext deines Browsers, da steht alles was JS schlussendlich nach der PHP/SQL Verarbeitung bekommt für den Graph. Und dann in die Doku und dann vergleichst du das und prüfst ob das dem entspricht das die Doku des Graph verlangt. Fertig.
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar

            Lädt...
            X