# Oracle Daten in PHP Diagramm darstellen



## tobiastt (7. April 2005)

Hallo ich möchte aus einer Oracle Tabelle Daten in einen PHP Diagramm darstellen. Hat das jemand Code bzw Erfahrungen wie man das macht ?

Danke

Tobi


----------



## motb (7. April 2005)

Hi Tobi!

Vermute das dein Problem eher an der Grafikseite liegt.
Bevor du das ganze selber programmierst, würde ich mir die phPlot-Klasse runterladen.
Damit kannst du mit nur ein paar Zeilen Code Diagramme aller Art zeichnen lassen.

Hier gehts zur Homepage: http://www.phplot.com/
Beispiel (bild + Code): http://www.phplot.com/examples/lineplot1.htm

Daniel


----------



## tobiastt (11. April 2005)

Hallo

vielen Dank. 

Leider bekomme ich jetzt diese Fehlermeldung was bedeutet das bzw was ist falsch?


Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/TrendMonitoring/connectDB.php:5) in /opt/apache/htdocs/TrendMonitoring/phplot.php on line 1090

Gruß Tobias


----------



## motb (11. April 2005)

Ganz einfach:

Wenn du das Bild "streaming" erzeugst (sprich das Bild wird vorher nicht gespeichert) darfst du vor der Bildausgabe *KEINE* ausgaben am Bildschirm machen (nicht einmal ein " ").

Falls du vorher aber Ausgaben machen musst, dann speicher das Bild als File ab, oder lagere die Bildroutinge in ein externes File aus und binde dieses nach dem Schema
<img src="dein_bild_script.php"> ein.

lg,
Daniel


----------



## tobiastt (11. April 2005)

Hallo

vielen Dank SUPER HILFE Das funktioniert super mit <img src="Diagramm.php">  ich dachte schon das kann doch nicht sein, wie soll ich keine Ausgabe vor dem Diagramm machen können. 

Kann ich diesen LINKI img src auch ein Array mitgeben? Ich habe Daten aus einer Oracle DB in ein Array eingelesen $datenarry jetzt will ich mir die Daten anzeigen lassen, also müsste ich das Feld in die Datei Diagramm übergeben können bzw mitgeben können

Gruß Tobi


----------



## motb (11. April 2005)

Am einfachsten kannst du das Array in einer Sessionvariable übergeben.


----------



## tobiastt (11. April 2005)

Hallo

aha also so in der Art ?

==========================================================
//in der Datei wo das Array sich befindet bzw angelegt und eingelesen wurde

session_start();
$_SESSION["lottozahlen"] = array(0,125,100,238,200,175,100,200,250,225,125);

<img src="Diagramm.php?"> 
==========================================================
//in der Datei wo sich das Diagramm befindet und das Array nutzt



Tobi


----------



## motb (11. April 2005)

Ja, genau so. Ist vermutlich der schnellste Weg um ein Array zwischen zwei Dateien auszutauschen.


----------



## tobiastt (11. April 2005)

mmh geht leider nicht

Quelldatei
<?php
 require_once("connectDB.php");
 session_start();
?>
 $_SESSION["name"] = array(0,125,100,238,200,175,100,200,250,225,125);
<img src="Diagramm.php?"> 

==============================================

// Diagramm.php
<?php 
$name = $_SESSION['name'];
echo $name;
?>

Ich weiß auch nicht ob Session so gut ist. Ich will ja nicht Benutzerdaten speichern. Session legt ja auch eine Datei an wenn ich das richtig verstanden habe.


----------



## motb (11. April 2005)

Liegt vermutlich an irgendwelchen Einstellungen.

Du kannst dann entweder noch den DB-Teil auch in die Diagramm.php legen (dann musst du die werte nicht übergeben).
Oder (wenn es nur so wenige werte sind) übergibst du sie als GET Variable.
Du musst dan die Werte allerdings mit Trennzeichen versehen um sie nachher wieder zu trennen.

zb: diagramm.php?my_array=13|23|101|1045   <- | als Trennzeichen.
In der digramm.php kannst du die Daten wieder mit explode herstellen.
zb: $my_array =  explode ("|", $_GET['my_array'])


----------



## tobiastt (11. April 2005)

Hallo

den DB Teil mit ins Diagramm.php legen hab ich mir auch schon überlegt dann bekomme ich aber die Fehlermeldung mit dem HEADER Zeugs. Weil ich im DB Teil die Tabelle ausgeben lasse mit den Daten die ich darstellen will. Oder kann ich da was machen? Ich habe es noch nicht geschafft eine Grafik (Diagramm) darzustellen was nicht in einer einzelnen Datei liegt. Weil sonst der Fehler mit dem Header kommt.

HEADER FEHLE : Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/TrendMonitoring/connectDB.php:5) in /opt/apache/htdocs/TrendMonitoring/phplot.php on line 1090


Danke

Tobi


----------



## motb (11. April 2005)

Schon mal versucht das File auf der Festplatte zu speichern?
Dann ersparst du dir die ganzen Probleme.

Um zu speichern musst du ganz einfach beim ERzeugen des Objektes einen weiteren Parameter (Filename) angeben.

Irgendwie in der Richtung:
$myGraph = New Graph(500x300,"myPic.jpg");

Ganz genau weiss ich es auch nicht auswending. Am besten in der Doku nachlesen.


----------



## aKraus (31. August 2005)

Hi,
Ich hab versucht, für eine Listenerstatistik ein Diagramm zu erstellen. Die anzahl der Listener werden minütlich per CronJob in die Datenbank geschrieben. Jetzt wollte ich ein Diagramm erstellen. Allerdings wird bei mir keine Linie angezeigt - warum?

Danke schonmal 

*[Update]*
Dargestelltes Diagramm als Anhang
*[/Update]*


```
$graph = new PHPlot;
 
$graph->SetDataType("linear-linear");
 
// Specify some data 
 
$data = array(
	array("", "18:00", 407),
	array("", "18:01", 406),
	array("", "18:02", 409),
	array("", "18:03", 399),
	array("", "18:04", 401),
	array("", "18:05", 405),
	array("", "18:06", 396),
	array("", "18:07", 399),
	array("", "18:08", 401),
	array("", "18:09", 404),
	array("", "18:10", 407),
	array("", "18:11", 407),
	array("", "18:12", 405),
	array("", "18:13", 410),
	array("", "18:14", 406),
	array("", "18:15", 411),
	array("", "18:16", 412),
	array("", "18:17", 412),
	array("", "18:18", 406),
	array("", "18:19", 410),
	array("", "18:20", 413),
	array("", "18:21", 423),
	array("", "18:22", 414),
	array("", "18:23", 388),
	array("", "18:24", 399),
	array("", "18:25", 392),
	array("", "18:26", 401),
	array("", "18:27", 412),
	array("", "18:28", 404),
	array("", "18:29", 382),
	array("", "18:30", 385),
	array("", "18:31", 387),
	array("", "18:32", 389),
	array("", "18:33", 391),
	array("", "18:34", 395),
	array("", "18:35", 389),
	array("", "18:36", 397),
	array("", "18:37", 397),
	array("", "18:38", 402),
	array("", "18:39", 402),
	array("", "18:40", 400),
	array("", "18:41", 400),
	array("", "18:42", 400),
	array("", "18:43", 406),
	array("", "18:44", 410),
	array("", "18:45", 407),
	array("", "18:46", 411),
	array("", "18:47", 410),
	array("", "18:48", 404),
	array("", "18:49", 408),
	array("", "18:50", 417),
	array("", "18:51", 418),
	array("", "18:52", 412),
	array("", "18:53", 411),
	array("", "18:54", 401),
	array("", "18:55", 402),
	array("", "18:56", 393),
	array("", "18:57", 397),
	array("", "18:58", 411),
	array("", "18:59", 413)
);
 
$graph->SetDataValues($data); 
 
//Specify plotting area details 
$graph->SetImageArea(600,400);
$graph->SetPlotType("lines");
$graph->SetTitleFontSize("2");
$graph->SetTitle("");
$graph->SetPlotAreaWorld(500,0);
$graph->SetPlotBgColor("white");
$graph->SetPlotBorderType("left");
$graph->SetBackgroundColor("white");
 
//Define the X axis 
$graph->SetXLabel("Minutes");
// $graph->SetHorizTickIncrement("5");
$graph->SetXGridLabelType("time");
 
//Define the Y axis 
$graph->SetVertTickIncrement("100");
$graph->SetPrecisionY("0");
$graph->SetYGridLabelType("data");
$graph->SetLightGridColor("blue");
 
$graph->SetDataColors(array("red"), array("black"));
 
$graph->DrawGraph();
```
 
Greatz


----------

