grafiek maken mbv phpgraphlib

Status
Niet open voor verdere reacties.

p3t3r

Gebruiker
Lid geworden
25 feb 2012
Berichten
48
Hallo,

Ik zit al enkele dagen te zoeken hoe ik een lijngrafiek kan maken met gegevens uit een mysql database.
Ik had dan een tut gevonden voor phpgraphlib.
Nu krijg ik wanneer ik deze codes aanpas een het tekentje van een afbeelding(
jkm.png
) maar niet de grafiek.

Mijn code:
PHP:
<?php
include("phpgraphlib.php");
$graph=new PHPGraphLib(550,350); 

define('DB_NAME', '');
define('DB_USER', '');
define('DB_PASS', '');
define('DB_HOST', '');

mysql_connect (DB_HOST, DB_USER, DB_PASS)
or die('Could not connect: ' . mysql_error());

mysql_select_db(DB_NAME) or die('Could not select database');

$dataArray=array();

//get data from database
$sql="SELECT week, resource FROM `cap` order by week asc";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
if ($result) {
 while ($row = mysql_fetch_assoc($result)) {
  $week=$row["week"];
  $resource=$row["resource"];
  //add to data array
  $dataArray[$week]=$resource;
  }
 }


//configure graph
$graph->addData($dataArray);
$graph->createGraph();
?>

Ik denk dat het is omdat tussen de gegevens geen , staat want, wanneer ik de gegevens er rechtstreeks inzet krijg ik wel de grafiek en dan gebruik ik een , om ze van elkaar te scheiden.

Alvast bedankt
(sorry als dit bij php moet staan :s)
 
Is de (makkelijke) oplossing dan niet zo simpel als de data in string of array zetten en er komma's bij in te voegen :P?

andere opties:
is resource wel een nummer? (als het tekst is dan kan de grafiek het niet goed plaatsen).
 
Het is de bedoeling dat iedere week gegevens bij de database komen dmv een formuliertje.
Het leek dus handig dat die grafiek automatisch werd geupdate.

Zowel week als resource zijn nummers.
 
In je voorbeeld haal je de data uit een database en stop je het in een array.

wat ik bedoelde is: zeg dat in de array 5 en 300 staat.
Dan kan je simpelweg de array doorlopen en 5,300 er van maken.

Dat zou dan nog steeds updaten met het formulier (omdat de database geupdate word)


simpel loopje:
Code:
<?php
    for ($i = 0; $i < count($array); ++$i) {
        print $array[$i] ;
        //i.p.v printen kan je dan de , toevoegen in de array of aan een nieuwe string, en dan kan je die string (of de nieuwe array) aan de grafiek toevoegen ;)
    }
?>
 
Laatst bewerkt:
uuhm waar moet dat, ik heb die codes gekopieerd en veel over gelezen waardoor ik die onder tussen snap maar voor de rest ken ik nieks van php :s
 
Wat je moet doen is bovenin een variabele maken (iets met een $ ervoor dat je later kunt gebruiken)

Dan gebruik je de volgende loop:

PHP:
<?php
$heleslechtevariabelenaam = "";
$array = array("foo", "bar", "hallo", "world");
    for ($i = 0; $i < count($array); ++$i) {
        $heleslechtevariabelenaam = $heleslechtevariabelenaam . $array[$i] . ',';
    }
$heleslechtevariabelenaam = substr_replace($heleslechtevariabelenaam ,"",-1);
	echo $heleslechtevariabelenaam;
?>


i.p.v echo $heleslechtevariabelenaam;
voeg je dan de $heleslechtevariabelenaam toe aan de array
 
Laatst bewerkt:
Nja, ik snap het niet echt.
Bedoel je zoiets?

PHP:
<?php
include("phpgraphlib.php");
$graph=new PHPGraphLib(550,350); 
$var="";
 
define('DB_NAME', '');
define('DB_USER', '');
define('DB_PASS', '');
define('DB_HOST', '');
 
mysql_connect (DB_HOST, DB_USER, DB_PASS)
or die('Could not connect: ' . mysql_error());
 
mysql_select_db(DB_NAME) or die('Could not select database');
 
$dataArray=array();
 for ($i = 0; $i < count($dataArray); ++$i) {
  $var = $var . $array[$i] . ',';
  $var = substr_replace($var ,"",-1);
 }
 
//get data from database
$sql="SELECT week, resource FROM `cap` order by week asc";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
if ($result) {
 while ($row = mysql_fetch_assoc($result)) {
  $week=$row["week"];
  $resource=$row["resource"];
  //add to data array
  $dataArray[$week]=$resource;
  }
 }
 
 
//configure graph
$graph->addData($dataArray);
$graph->createGraph();
?>

Waarschijnlijk niet -.-'
 
Het is misschien slim om wat meer kennis op te doen van php voordat je aan sowiets begint :P

Wat je moet (in korte stappen)
  • Data inlezen uit server en in resultset zetten
  • resultset doorlopen en variabele aanpassen
  • variabele toevoegen aan de graph

Het is zo namelijk best wel lastig om het script dat u post aan te passen aangezien ik geen server heb met dezelfde gegevens.
Maar ik ga het proberen:

PHP:
<?php
include("phpgraphlib.php");
$graph=new PHPGraphLib(550,350); 
$var="";
$dataArray=array();
 
define('DB_NAME', '');
define('DB_USER', '');
define('DB_PASS', '');
define('DB_HOST', '');
 
mysql_connect (DB_HOST, DB_USER, DB_PASS)
or die('Could not connect: ' . mysql_error());
 
mysql_select_db(DB_NAME) or die('Could not select database');

 
//get data from database
$sql="SELECT week, resource FROM `cap` order by week asc";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
if ($result) {
 while ($row = mysql_fetch_assoc($result)) {
  $week=$row["week"];
  $resource=$row["resource"];
  array_push($array, $week, $resource);
  //add to data array
 // $dataArray[$week]=$resource;
  }
   for ($i = 0; $i < count($array); ++$i) {
        $var = $var . $array[$i] . ',';
		$var = substr_replace($var ,"",-1);
    }
 }
 
 
//configure graph
$graph->addData($var);
$graph->createGraph();
?>


Dit zou een string moeten opleveren die er als volgt uitziet:

week,resource,week2,resource2,week3,resource3,week4,resource4.

Die wordt vervolgens zo meegegeven aan de grafiek. (zeg het even als die string zo niet klopt met al die comma's)
 
hmm, ik denk dat ik in het begin het misschien wat vaag gezegd heb.

Uit de voorbeelden zie ik dat de data zo moet staan:
PHP:
$data = array("1" => .0032, "2" => .0028, "3" => .0021, "4" => .0033, 
"5" => .0034, "6" => .0031, "7" => .0036, "8" => .0027, "9" => .0024, 
"10" => .0021, "11" => .0026, "12" => .0024, "13" => .0036, 
"14" => .0028, "15" => .0025);

Met mijn vorige code kreeg ik:
PHP:
$data = array([1] => .0032 [2] => .0028 ... [15] => .0025);
zo zag ik het toch met print_r

Dus moeten de [] "'jes worden en moet er na een groep een , komen.

Als het je helpt wil ik ook wel de mysql hierop zetten.
 
Je werkt dan met een key (string of integer) en een waarde (string).


Probeer dit eens:

PHP:
$array=array("1"=>".01234","2"=>".12345","3"=>".78946");

 array_push($array, "4", ".89780");
 array_push($array, "5", ".31457");

En stop die vervolgens in de plugin, dat zou het volgens mij moeten doen.
 
Het werkt nu wel, ik heb gewoon "$graph=new PHPGraphLib(550,350); " onder "//configure graph" gezet.

Toch bedankt voord de hulp
 
Verplaatst van SQL / MySQL naar PHP
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan