mehrere Grafiken mit jpgraph und Datenübergabe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mehrere Grafiken mit jpgraph und Datenübergabe

    Hallo Gemeinde.

    ich versuche vergeblich, mehrere Grafiken mit jpgraph in einer HTML-Datei zu erstellen. Dazu hole ich einen Satz Daten aus einer Datenbank, speichere sie in '$_SESSION[]' und rufe eine Funktionn auf, die eine Grafik erstellt. Das gleiche mache ich ein zweites Mal mit neuen Daten. Das Ergebnis im Browser ist zweimal das gleiche Bild mit den Daten des zweiten Bildes.

    Quellcode

    1. session_start();
    2. # viel anderer Code
    3. $data = GetMonthData ( $show, $db, 'strom_werte' ); // Daten-Array aus der Datenbank
    4. $cfg = array ( 'title' => 'Strom', 'x'=>'Datum', 'y'=>'Verbrauch'); // Zur Konfiguration des Graphen
    5. $_SESSION['data'] = $data; // Daten speichern
    6. $_SESSION['cfg'] = $cfg;
    7. ?>
    8. <table border="1"> <!-- Tabelle zeichnen -->
    9. <tr><td>
    10. <img src="graph.php">Strom</img> <!-- erste Aufruf mit 1. Datensatz -->
    11. </td>
    12. <?php
    13. $data = GetMonthData ( $show, $db, 'wasser_werte' ); // 2. Datensatz abholen
    14. $cfg = array ( 'title' => 'Wasser', 'x'=>'Datum', 'y'=>'Verbrauch'); // Zur Konfiguration des Graphen
    15. $_SESSION['data'] = $data; // 2. Datensatz speichern
    16. $_SESSION['cfg'] = $cfg;
    17. ?>
    18. <td>
    19. <img src="graph.php">Wasser</img> <!-- Graphen mit 2. Datensatz zeichnen -->
    20. </td>
    21. <?php
    Alles anzeigen


    Hier ist die Funktion zum Erstellen des Graphen:

    Quellcode

    1. session_start();
    2. $data = $_SESSION['data'];
    3. $cfg = $_SESSION['cfg'];
    4. $width = 400;
    5. $height = 200;
    6. $graph = new Graph( $width, $height);
    7. $graph->SetScale ('intlin');
    8. $lineplot = new LinePlot ( $data );
    9. $graph->add ( $lineplot);
    10. $graph->title->set ($cfg['title']);
    11. // $graph->xaxis->title->set ($cfg['x']);
    12. // $graph->yaxis->title->set ($cfg['y']);
    13. $graph->Stroke();
    Alles anzeigen


    Was mache ich falsch bzw. wie geht es richtig?
    FB_Addon_TelNo{
    height:15px !important;
    white-space: nowrap !important;
    background-color: #0ff0ff;}
  • Hallo Torben,

    Torben Brodt schrieb:

    Hi, du solltest die Daten nicht in der Session übergeben.
    Übergebe strom_werte bzw wasser_werte als GET Parameter an die graph.php
    Dort kannst du die Daten dann aus der Datenbank laden.
    Ich möchte Datenbank- und Grafik-Funktionen voneinander getrennt haben, soll heißen, die Graphik soll beliebige Daten bekommen können und nicht selber zusammensuchen.
    Vermutlich ist es dann geschickter, das Erstellen der Grafik in eine Funktion zu packen und die Daten als Array zu übergeben. Dann aber die Grafik als Datei speichern und den Link in das <img> Tag zu schreiben.
    Im Moment kann es gar nicht funktionieren, weil die Bilder erst vom
    Benutzer geladen werden, wenn das php script vollständig durchgelaufen
    ist.
    Auf der html Seite sind zwei Bilder, aber zweimal die Gleichen vom letzten script-Aufruf (wasser_werte)

    Danke und Gruß,
    Felix
    FB_Addon_TelNo{
    height:15px !important;
    white-space: nowrap !important;
    background-color: #0ff0ff;}FB_Addon_TelNo{
    height:15px !important;
    white-space: nowrap !important;
    background-color: #0ff0ff;}FB_Addon_TelNo{
    height:15px !important;
    white-space: nowrap !important;
    background-color: #0ff0ff;}