dgr243 Geschrieben 29. März 2007 Geschrieben 29. März 2007 Moin, ich will nen Liniendiagramm aus Daten erstellen welche von einer MySQL DB geliefert werden. Die beiden Felder dich ich haben will heissen Datum und Betrag. Kurzum: Ich will auf der X-Achse das Datum stehen haben und auf der Y-Achse den jeweiligen Betrag (können per Definition ausschliesslcih postivie Beträge sein) Datum ist DateTime als Typ Betrag ist integer Das unten angehängt script liefert mir alelrdings nur ne leere Grafik zurück: <?php // JPGraph Library einbinden include ("includes/dbconnect.inc.php"); include ("includes/jpgraph-2.1.4/src/jpgraph.php"); include ("includes/jpgraph-2.1.4/src/jpgraph_line.php"); // Neuen Graph bilden $graph = new Graph(350,250,"auto"); //get the db ready error_reporting(E_ALL); @mysql_connect($host, $db_user, $db_pass) OR die(mysql_error()); mysql_select_db('darkorbit') OR die(mysql_error()); $sql = "SELECT Datum, Kontostand FROM kontostand ORDER BY Datum;"; $result = mysql_query($sql) OR die(mysql_error()); //push the data into $data array to get it plotted $i=0; while ($array=mysql_fetch_array($result)) { $datax[$i]=$array[0]; $datay[$i]=$array[1]; $i++; }; // Grafik definieren... $graph->SetScale("int", "textlin"); //Daten an Grafik übergeben //hier liegt wohl der Fehler, weil $lineplot ja zweimal gesetzt wird //aber wie zum teufel übergebe ich jpgraph die info //$datax() ist das array für die daten der x-achse //$datay() ist das array für die y-achse? // //irgendwie check ich die datenübergabe nicht $lineplot=new LinePlot($datax); $lineplot=new LinePlot($datay); $graph->Add($lineplot); // Graph ausgeben $graph->Stroke(); ?> [/php] Hab den fraglichen Bereich mit Komemntaren versehen. Any Help greatly appreciated Zitieren
dgr243 Geschrieben 29. März 2007 Autor Geschrieben 29. März 2007 ok nach änderung der zeile $graph->SetScale("int", "textlin"); auf $graph->SetScale("textlin"); hab ich zumindest die x-werte schonmal richtig drin.. nu muss ich nur noch wissen wie ich die y-achse korrekt mit den zu den x-werten gehörigen datumswerte beschrifte ... Zitieren
dgr243 Geschrieben 29. März 2007 Autor Geschrieben 29. März 2007 also imho ist jetzt allns richtig ... <?php // JPGraph Library einbinden include ("includes/jpgraph-2.1.4/src/jpgraph.php"); include ("includes/jpgraph-2.1.4/src/jpgraph_line.php"); // Neuen Graph bilden $graph = new Graph(600,400,"auto"); //get the db ready error_reporting(E_ALL); @mysql_connect(localhost, root, koo4kej) OR die(mysql_error()); mysql_select_db('darkorbit') OR die(mysql_error()); $sql = "SELECT Datum, Kontostand FROM kontostand ORDER BY Datum;"; $result = mysql_query($sql) OR die(mysql_error()); //push the data into $data array to get it plotted $i=0; while ($array=mysql_fetch_array($result)) { $datum[$i]=$array[0]; $betrag[$i]=$array[1]; $i++; }; // Grafik definieren... $graph->SetScale("textint"); $lineplot =new LinePlot($betrag, $datum); $lineplot->value-> Show(); $graph->Add($lineplot); // Graph ausgeben $graph->Stroke(); ?> [/php] Führt aber zur Fehlermeldung Either X or Y Data contains non-numeric values ... richtig .. denn das datum aus der sql db hat ja auch das format "YYYY-MM-DD" help .. ich komm da echt nimmer weiter Zitieren
ZuVieL Geschrieben 29. März 2007 Geschrieben 29. März 2007 kenne das script nicht. kannst dir ja mal den chartdirector angucken, ist ziemlich simpel damit ChartDirector Chart Component and Control Library for ASP/COM/VB/.NET/Java/JSP/PHP/Perl/Python/Ruby/ColdFusion/C++ Zitieren
dgr243 Geschrieben 29. März 2007 Autor Geschrieben 29. März 2007 schau ich mir auf jeden fall an, aber ich würds scho gern mit jpgraph hinkriegen bin immerhin schon nen schritt weitergekommen. den rest krieg ich auch noch hin .. und wenn ich den angeblichen string vorher in date umcasten muss edit: umcasten war ne gute idee.. nu funzt es <?php // JPGraph Library einbinden include ("includes/jpgraph-2.1.4/src/jpgraph.php"); include ("includes/jpgraph-2.1.4/src/jpgraph_line.php"); include ("includes/jpgraph-2.1.4/src/jpgraph_date.php"); // Neuen Graph bilden $graph = new Graph(600,400,"auto"); //get the db ready error_reporting(E_ALL); @mysql_connect($host, $dbuser, $dbpass) OR die(mysql_error()); mysql_select_db('darkorbit') OR die(mysql_error()); $sql = "SELECT Datum, (Kontostand/1000000) AS Kontostand FROM kontostand ORDER BY Datum;"; $result = mysql_query($sql) OR die(mysql_error()); //push the data into $data array to get it plotted $i=0; while ($array=mysql_fetch_array($result)) { $datum[$i]= strtotime($array[0]); $betrag[$i]=$array[1]; $i++; }; // Grafik definieren... $graph->SetScale("datint"); $lineplot =new LinePlot($betrag, $datum); $lineplot->SetLegend('Kontostand'); $lineplot->value-> Show(); $graph->xaxis->SetLabelAngle(90); $graph->SetMargin(40,40,30,130); $graph->Add($lineplot); // Graph ausgeben $graph->Stroke(); ?> [/php] *freus* Zitieren
ZuVieL Geschrieben 29. März 2007 Geschrieben 29. März 2007 guck dir mal PHP: strtotime - Manual und PHP: date - Manual an Zitieren
Eupinkepank Geschrieben 2. April 2007 Geschrieben 2. April 2007 Du willst ein Balkendiargramm mit dem Verlauf eines Kontostandes haben? Warum schiesst Du mit Kanonen auf Spatzen? Mal abgesehen von der DB Abfrage sind dass evtl. 30 Zeilen in stinknormalem PHP um die GD Lib für diese Funktion zu nutzen. Ihr wollt doch alle programmieren, oder? Dann programmiert auch! Zitieren
dgr243 Geschrieben 2. April 2007 Autor Geschrieben 2. April 2007 1. funktioniert es ja wie gesagt schon und 2. ich bin netzwerkadmin und das ganze is privatvergnügen ich will nicht programieren, sondern ich hab nen problem was ich mit dem was ich kann lösen will. achja: 3. dein (@Eupinkepank) beitrag ist ungefähr so interessant wie der berühmte chinesiche sack reis Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.