Datenbankabfrage & JPGraph
Datenbankabfrage & JPGraph
am 04.09.2006 14:40:45 von Christian Wiecha
Hallo,
ich will eine Auswertung mit JPgraph machen und hole die Daten aus einer DB.
Mit var_dump bekomme ich die auch ordentlich angezeigt, aber habe dann
Probleme mit den einzelnen Lineplots, da sich diese dynamisch aufbauen
sollen.
So sieht das bisher aus:
--------
include ("/www/htdocs/graph/src/jpgraph.php");
include ("/www/htdocs/graph/src/jpgraph_line.php");
require("./dbconn.inc.php");
$graph = new Graph(650,400,"auto");
$graph->SetScale("textlin");
@mysql_connect($host, $user, $password)
or die("Abbruch: Verbindung zu '$host'" . " konnte nicht hergestellt
werden.");
@mysql_select_db($database)
or die("Abbruch: Datenbank '$database' konnte nicht" . " selektiert
werden.
MySQL sagt: " . mysql_error());
$querychart = "SELECT DISTINCT `name` FROM `test`";
$resultchart = @mysql_query($querychart);
$i =0;
while($row1=mysql_fetch_row($resultchart))
{
$name[$i] = $row1[0];
$querychart1 = "SELECT `gewicht`,DATE_FORMAT(datum,'%d.%m.%y') FROM
`test` WHERE name = '$name[$i]' ORDER BY `test`.`datum` ASC";
$resultchart1 = @mysql_query($querychart1);
while($row2=mysql_fetch_row($resultchart1))
{
$ydata[$i] = $row2[0];
$date[$i] = $row2[1];
->> $lineplot.$i=new LinePlot($ydata[$i]);
->> $graph->Add($lineplot.$i);
}
++$i;
}
$graph->Stroke();
?>
-------------------
Der Fehler muß in diesem Bereich liegen, ich bekomme folgende Meldung:
Fatal error: Cannot pass parameter 1 by reference in
/www/htdocs/1chart.inc.php on line 30 (Zeile 30+31 wurden mit->> markiert)
Wer kann mir weiterhelfen, vielen Dank.
Grüße
Christian
Re: Datenbankabfrage & JPGraph
am 04.09.2006 17:19:59 von Ulf Kadner
Christian Wiecha wrote:
> ->> $lineplot.$i=new LinePlot($ydata[$i]);
Was willst Du mit dieser Codezeile ausdrücken?
Genauer: Was soll .$i da?
Das ist keine gültige PHP-Syntax im Sinne eine Zuweisung!
Ich hab mir jetzt Deinen Code nicht durchgelesen, aber soll $lineplot
evtl ein Array sein? $lineplot[$i]
Wenns ne variable Variable sein soll (aber das ist eh meist nicht
notwendig):
Welchen Sinn macht es da abhängig von $i eine Variable zu erstellen die
Ihre Gültigkeit eh nach jedem Durchgang wieder verliert? Ich schätze keinen.
Nimm einfach:
$lineplot = new LinePlot($ydata[$i]);
$graph->Add($lineplot);
MfG, Ulf
Re: Datenbankabfrage & JPGraph
am 04.09.2006 19:40:29 von Christian Wiecha
> $lineplot = new LinePlot($ydata[$i]);
> $graph->Add($lineplot);
Hi,
danke für deine Antwort, leider bringt mich deine Codezeile nicht
wirklich weiter.
Ich benötige X Variablen "$lineplot", sprich für jeden Strich im Bild eine.
$lineplot0
$lineplot1
$lineplot2
usw..
Gruß
Christian
Re: Datenbankabfrage & JPGraph
am 04.09.2006 19:47:35 von Ulf Kadner
Christian Wiecha wrote:
> danke für deine Antwort, leider bringt mich deine Codezeile nicht
> wirklich weiter.
> Ich benötige X Variablen "$lineplot", sprich für jeden Strich im Bild eine.
Nimm halt nen Array. Das ist dann die korrekte Lösung für Dein Problem.
Es ist sinnfrei Variablem variabel ansprechen zu müssen wenn doch ein
Array fuer genau sowas gemacht wurde.
>
> $lineplot0
> $lineplot1
> $lineplot2
$lineplot[0]
$lineplot[1]
$lineplot[2]
> usw..
dito...
MfG, Ulf
Re: Datenbankabfrage & JPGraph
am 04.09.2006 19:59:00 von Ulf Kadner
Ulf Kadner wrote:
> $lineplot[0]
> $lineplot[1]
> $lineplot[2]
Also in etwa so:
while ($row2=mysql_fetch_row($resultchart1)) {
$ydata[$i] = $row2[0];
$date[$i] = $row2[1];
$lineplot[$i] = new LinePlot($ydata[$i]);
$graph->Add($lineplot[$i]);
}
MfG, Ulf
Re: Datenbankabfrage & JPGraph
am 04.09.2006 20:01:09 von Ulf Kadner
Ulf Kadner wrote:
> Ulf Kadner wrote:
>
>> $lineplot[0]
>> $lineplot[1]
>> $lineplot[2]
>
>
> Also in etwa so:
>
Erst natürlich initialisieren
$lineplot = array();
> while ($row2=mysql_fetch_row($resultchart1)) {
> $ydata[$i] = $row2[0];
> $date[$i] = $row2[1];
> $lineplot[$i] = new LinePlot($ydata[$i]);
> $graph->Add($lineplot[$i]);
> }
Ich hoffe das war jetzt. >:(
MfG, Ulf
Re: Datenbankabfrage & JPGraph
am 04.09.2006 23:41:18 von Christian Wiecha
> Erst natürlich initialisieren
>
> $lineplot = array();
>
>> while ($row2=mysql_fetch_row($resultchart1)) {
>> $ydata[$i] = $row2[0];
>> $date[$i] = $row2[1];
>> $lineplot[$i] = new LinePlot($ydata[$i]);
>> $graph->Add($lineplot[$i]);
>> }
>
>
> Ich hoffe das war jetzt. >:(
Hi,
leider nicht ganz, irgendwie beiße ich heute Abend gleich in die
Tischplatte.
Ein var_dump($ydata[1]);
bringt folgende Ausgabe: string(2) "95" string(3) "104" string(3) "128"
string(3) "145" string(3) "156" string(3) usw..
Wie kann ich das Umstellen, das der gleiche Dump dann wie folgt ausgibt:
array(10) { [0]=> int(11) [1]=> int(3) [2]=> int(8) [3]=> int(12)
[4]=> usw..
Danke
Christian
Re: Datenbankabfrage & JPGraph
am 05.09.2006 00:05:51 von Ulf Kadner
Christian Wiecha wrote:
> leider nicht ganz, irgendwie beiße ich heute Abend gleich in die
> Tischplatte.
>
> Ein var_dump($ydata[1]);
> bringt folgende Ausgabe: string(2) "95" string(3) "104" string(3) "128"
> string(3) "145" string(3) "156" string(3) usw..
>
> Wie kann ich das Umstellen, das der gleiche Dump dann wie folgt ausgibt:
> array(10) { [0]=> int(11) [1]=> int(3) [2]=> int(8) [3]=> int(12)
> [4]=> usw..
Du willst also aus einem String-Array ein Integer-Array machen?
Da kann man z.B. array_map in Kombination mit intval() nutzen. Da die
Funktionssignatur zur Signatur einer Callback-Funktion/Methode passt
geht das hier so einfach mit:
$a = array('1', '20');
$b = array_map('intval', $a);
var_dump($b);
exit;
MfG, Ulf
Re: Datenbankabfrage & JPGraph
am 05.09.2006 00:15:23 von Nadja May
> $a = array('1', '20');
> $b = array_map('intval', $a);
> var_dump($b);
> exit;
Hi,
irgendwie kapiere ich im Moment nichts. Wie kann ich das in dem oberen
Code verwenden?
Danke!
Grüße
Christian
Re: Datenbankabfrage & JPGraph
am 05.09.2006 00:16:55 von Christian Wiecha
> Da kann man z.B. array_map in Kombination mit intval() nutzen. Da die
> Funktionssignatur zur Signatur einer Callback-Funktion/Methode passt
> geht das hier so einfach mit:
>
> $a = array('1', '20');
> $b = array_map('intval', $a);
> var_dump($b);
> exit;
Hi,
irgendwie kapiere ich im Moment nichts und stehe schon die ganze Zeit
auf dem Schlauch. Wie kann ich das in dem oberen Code verwenden?
Danke!
Grüße
Christian
Re: Datenbankabfrage & JPGraph
am 05.09.2006 00:33:24 von Niels Braczek
Christian Wiecha schrieb:
> Ein var_dump($ydata[1]);
> bringt folgende Ausgabe: string(2) "95" string(3) "104" string(3) "128"=
=20
> string(3) "145" string(3) "156" string(3) usw..
>=20
> Wie kann ich das Umstellen, das der gleiche Dump dann wie folgt ausgibt=
:=20
> array(10) { [0]=3D> int(11) [1]=3D> int(3) [2]=3D> int(8) [3]=3D> i=
nt(12)=20
> [4]=3D> usw..
Explizite Typwandlung bei der Zuweisung:
$ydata[$i] =3D intval( $row2[0] );
aber das sind einfachste Grundlagen.
Dir sein das Manual, hier das Kapitel zu den Datentypen, ans Herz helegt.=
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Datenbankabfrage & JPGraph
am 05.09.2006 02:21:07 von Ulf Kadner
Christian Wiecha wrote:
> irgendwie kapiere ich im Moment nichts und stehe schon die ganze Zeit
> auf dem Schlauch. Wie kann ich das in dem oberen Code verwenden?
Da hab ich keinen Bock mehr drauf! Sorry!
Aber ich kann Niels nur zustimmen. Lern erst mal nen paar
PHP-Grundlagen. Die NG ist nicht dazu gedacht PHP-Lernkurse zu veranstalten.
Und vor allem!
Antworte nicht nur auf Dinge die Dir gerad in den Kram passen. Ich hab
keinen Bock alles scheinbar unverstanden "5 mal zu schreiben" und nicht
zu wissen ob Du überhaupt etwas davon verstehst.
MfG, Ulf
Re: Datenbankabfrage & JPGraph
am 05.09.2006 07:51:28 von Christian Wiecha
> Und vor allem!
> Antworte nicht nur auf Dinge die Dir gerad in den Kram passen. Ich hab
> keinen Bock alles scheinbar unverstanden "5 mal zu schreiben" und nicht
> zu wissen ob Du überhaupt etwas davon verstehst.
Danke für deine bisherige Hilfe, aber wenn du keinen Bock hast, dann
lasse es doch einfach.
Christian