# PHPlot darstellen



## balexan (13. Juli 2015)

Hallo,
Ich habe diesen phplot code  geschrieben


```
<?php

// here we include the PHPlot code
require_once ('phplot/phplot.php'); 
include('db_connect.inc.php');

$data = array();   

$sql = "SELECT * FROM `test becker` WHERE id = 2 ORDER BY zeitstempel DESC LIMIT 10" ;

$x   = 'zeitstempel'

while($row = mysql_fetch_assoc($sql,$db))
{
 $data [] = array('', $x, $row['spg']); 
}  

$plot = new PHPlot(800, 600);
$plot->SetImageBorderType('none');
$plot->SetPlotType('lines');
$plot->SetDataType('data-data');
$plot->SetDataValues($data);

//Specify plotting area details
$plot->SetTitle('Wochenasicht LKW');
$plot->SetYTitle('Spannung');
$plot->SetXTitle('Zeit');
$plot->SetLegend(array('Spannungs verlauf'));
$plot->SetDataColors(array('red'));

//Define the axis
$plot->SetPlotAreaWorld(NULL, NULL, NULL, NULL);

//Disable image output
$plot->SetPrintImage(false);

//Draw the graph
$plot->DrawGraph();

?>
```

und will das wenn ich die Datei (siehe unten) auf der Website aufruf das obere Diagramm mit angezeigt wird.
Wie mach ich das?
Ist der phplot zugriff Code überhaupt richtig?

*Danke.*


```
<?php

//echo "Inhalt der Datei: WochenasichtLKW.inc.php";
include('db_connect.inc.php');

//SQL-Befehl vorbereiten   
$sql = "SELECT * FROM `test becker` WHERE id = 2 ORDER BY zeitstempel DESC LIMIT 10" ;
$erg = mysql_query ($sql,$db) or die ("Fehlermeldung=". mysql_error());
$anz = mysql_num_rows($erg);

echo "<table>";
echo "<thead>";
echo "<tr><th>id</th><th>zeitstempel</th><th>variante</th><th>spg</th><th>verbindung</th><th>komentar</tr>";
echo "</thead";
echo "<tbody>";

for ($i=0; $i<$anz; $i=$i+1)
{
  $a=mysql_result($erg, $i, "id");
  $b=mysql_result($erg, $i, "zeitstempel");
  $c=mysql_result($erg, $i, "variante");
  $d=mysql_result($erg, $i, "spg");
  $e=mysql_result($erg, $i, "verbindung");
  $f=mysql_result($erg, $i, "komentar");

  echo"<tr><td>$a</td><td>$b</td><td>$c</td><td>$d</td><td>$e</td><td>$f</tr>";
}

echo "</tbody>";
echo "</table>";  
?>
```


----------



## tobee (6. August 2015)

Die Chance das dir geholfen wird, erhöht sich ungemein wenn du dein PHP-Code in ein [ php ]$foo = "bar";[ /php ] packst


----------



## SpiceLab (6. August 2015)

tobee hat gesagt.:


> [...] wenn du dein PHP-Code in ein [ php ]$foo = "bar";[ /php ] packst


Mit Hilfe des *[plain ][ /plain]*-Tags (unter vBulletin noch als "noparse" bekannt) bedarf es nicht der Leerzeichen 

https://www.tutorials.de/help/bb-codes


----------



## ComFreek (7. August 2015)

Ich habe kurzerhand den ganzen Beitrag auf Vordermann gebracht (Notepad++ Suchen & Ersetzen / reguläre Ausdrücke )!

Nun, unter der Annahme, dass $plot->DrawGraph() ein Bild inkl. richtigen HTTP-Headern ausgibt, könntest du die ersten Datei einfach mittels <img> referenzieren:

```
<img src="erste-datei-mit-plot-code.php" />
```

Du solltest allerdings das Bild irgendwie cachen, ansonsten generierst du es immer wieder erneut!

Weitere Anmerkungen:
1) Die mysql-Erweiterung ist veraltet. Informier dich darüber im Internet. Nutze mysqli oder PDO. In beiden Fällen aber Prepared Statements für Benutzereingaben! Diese Erweiterung ist mittlerweile schon so lange veraltet, dass ich nicht verstehen kann, wo Leute die Benutzung solchen Codes aufgabeln. Quasi auf jeder vernünftigen PHP-Dokumentationsseite ist eine große, unübersehbare Warnung vermerkt.

2) In Zeile 14 deiner zweiten Datei fehlt eine schließende spitze Klammer
3) Du den Variablennamen a bis f sag ich mal nichts. Das hätte wesentlich eleganter mit einem Array gelöst werden können.


----------



## balexan (10. August 2015)

Hi, Danke für die Antwort.
habe mich in 2 Monaten von 0 aus über Yotube und Foren eingelernt, Alles irgntwie zusammengebastellt, darum ist alles unprofessionell.
Habe das programm zum laufen gebracht.
Das Ganze PHP einfach in HTML verpackt und mit <img src="graph_id2.php"> ausgegeben.
Das phplot musste auch noch bissle umbauen, aber jetzt habe weinigsten ein Diagramm.
Leider ohne X achsen Datten???
Also spg Datten habe ich, nur Zeitstempel Datten gehen nicht.
Habe auch nichts in phplot Bibliotek gefunden.
Warum ? Was ist Falsch? Ist das überhaupt möglich?

```
$data = array();
while($row = mysql_fetch_array($erg))
{  $data [] = array('', $row['zeitstempel'], $row['spg']);  }
```


Wenn ich es so schreib dann gehts, aber wie gesagt ohne 'zeitstempel ' Datten

```
$data = array();
$x   = 0;
while($row = mysql_fetch_array($erg))
{  $data [] = array('', $x, $row['spg']);
    $x++;  }
```


Was meinst Du mit Variablennamen a bis f anders schreiben. Wie?

Danke.


----------



## ComFreek (10. August 2015)

balexan hat gesagt.:


> Also spg Datten habe ich, nur Zeitstempel Datten gehen nicht.


Bitte konkretisiere! Was heißt "nicht gehen"? Kannst du vielleicht die Bilder beider Diagramme hochladen?



balexan hat gesagt.:


> Was meinst Du mit Variablennamen a bis f anders schreiben. Wie?


Solche Variablennamen sind nicht aussagekräftig. Gewöhn dir gleich an, sinnvolle Variablennamen zu vergeben. In deinem Fall könnten sie z. B. den Spaltennamen entsprechen.

Laut http://www.phplot.com/phplotdocs/SetXLabelType.html werden die X-Werte "as-is" dargestellt, d. h. unverändert, somit dürften Datumswerte eigentlich auch in Ordnung gehen.


----------



## balexan (11. August 2015)

mit dem code

```
$data = array();
$x   = 0;
while($row = mysql_fetch_array($erg))
{  $data [] = array('', $x, $row['spg']);
    $x++;  }
```








mit Klammer am anfang keine X Datten und alles in einer Reihe rechts.

```
$data = array();
while($row = mysql_fetch_array($erg))
{  $data [] = array('', $row['zeitstempel'], $row['spg']);  }
```








mit KLammer in der mitte alles in einer Reihe  Links

```
$data [] = array($row['zeitstempel'], '',$row['spg']);
```







und ohne klammer keine Y Datten und keine Linie

```
$data [] = array($row['zeitstempel'],$row['spg']);
```






weiss nicht was ich noch ausprobieren soll/kann.
oder ganz anders eingeben??


----------



## balexan (11. August 2015)

Irgenwie hat es die Bilder nicht übernohmen.
Hier noch mal in der gleiche Reihenfolge


----------



## alxy (11. August 2015)

Warum nimmst du für das Plotten PHP? Ich würde immer Javascript dafür nehmen - die Graphen sind nämlich besser bedienbar (Interaktivität) und meistens einfacher benutz und erstellbar als das ganze PHP Zeugs. (Wenn du mal mit Bildern und PHP gearbeitet hast, weißt du was dahintersteckt.)

Als Alternative: http://www.chartjs.org/docs/#line-chart
Oder von Google: https://google-developers.appspot.com/chart/interactive/docs/gallery/linechart
Dein PHP Array bekommst du in ein JS valides Array mit http://de2.php.net/manual/de/function.json-encode.php


----------



## mermshaus (16. August 2015)

Sorry, mir ist die Fragestellung zu konfus präsentiert. Ich habe keine Lust, zu versuchen, das nachzuvollziehen, obwohl man das auch viel einfacher fragen könnte.

Du kannst dir zum Beispiel für eine Präsentation des Problems den kompletten DB-Code sparen und Testdaten, die das Problem hervorrufen, einfach als Array direkt im Code definieren. Von uns hat die DB halt keiner, was es für uns nur total umständlich macht, den Code gegebenenfalls mal zu testen, um ihn zu reparieren.

Die Frage in gut könnte grob so aussehen:



> Hi.
> 
> Ich nutze PHPlot (Download hier: http://sourceforge.net/projects/phplot/), um ein Diagramm zu generieren. Bei diesem Code…
> 
> ...



Das Schöne ist zudem: Wenn du dir die Mühe machst, ein wirklich gutes Beispiel für Helfer im Forum zu erstellen, dann findest du oft dabei schon selbst die Fehlerursache.


----------

