array graphico phplot

Ciao a tutti sto cercando di creare un grafico a torta ricavando i dati da un database. ricavo i dati (somma per prodotto) in un array ma non riesco a capire come poi passare i dati a phplot.
ecco il mio codice:

PHP:
include ('config.php');
require 'phplot/phplot.php';
if(isset($_POST['TEST']))
{ $mese = $_POST['mese'];
  $prod = $_POST['prod'];
}
$query = "SELECT PRODOTTO,count(*) AS col_num FROM extrabanca_conti WHERE MESE = " ."'$mese' GROUP BY PRODOTTO ASC";
$result = mysql_query($query);
$graph_data = array();
while($dbres = mysql_fetch_assoc($result))
{
$graph_data[] = array($dbres['col_num'],$dbres['PRODOTTO']);
}

$graph =& new PHPlot(400,300);
$graph->SetPlotType("pie");
$plot->SetDataValues($graph_data);  // linea 23
$plot->DrawGraph();

e come messaggio di errore ho:
Notice: Undefined variable: plot in /home/daddycon/public_html/confronto1.php on line 23

Fatal error: Call to a member function SetDataValues() on a non-object in /home/daddycon/public_html/confronto1.php on line 23
Dove sbaglio ( devo confessare che sto ancora imparando a manipolare gli array... :evil:
 
grazie per la risposta

La variabile che contiene l'istanza di PHPlot non si chiama $plot ma $graph:
PHP:
$graph->SetDataValues($graph_data);
$graph->DrawGraph();
cambiando la variabile come da te indicato ho un altro tipo di errore.

Undefined property: PHPlot::$data in /home/daddycon/public_html/extrabanca/phplot/phplot.php on line 3835
e poi una serie di Cannot modify header information - headers already sent by etc...
eppure seguendo il manuale ho in un primo file

HTML:
<img src="confronto1.php" name="Image" />";
 
probabilmente

qualcosa non ho capito nel utilizzo di plotphp.
ho capito che non devo avere l'html e la torta sullo stesso file ma avere un imagine di ref.
ho quindi fatto nel primo file:
HTML:
<form method="post" name='extramoneybox' action="confronto1.php">
<select name="mese">
<option value>...</option>
</select>
<input type="submit" name = 'Invia' value="TEST">
<p> graph<img src="confronto1.php" name="Image" />";
e nel secondo (quello sensato creare il grafico)
il mio codice precedente
 
no...

sto rifacendo le cose step by step.
nel primo file ho messo solo
HTML:
<BODY>

<p> voici le graphe </p>
<IMG SRC="http://www.daddyconcept.com/graph_2.php">

</BODY>
</HTML>

in graph_2.php
se passo "manualmente" l'array

PHP:
$example_data = array(
array('a',55,95)
);
perfetto ho il grafico che compare.
adesso il mio problema è che vorrei che l'array fosse dynamico cioè con i risultati di un query in un db...
e li invece non ci riesco...
se c'è qualche esempio ben venga!
 
piano piano faccio passi avanti...

PHP:
$graph->SetPlotType("pie");
//$legend = array();
//$legend[] = "stock 1";
//$legend[] = "stock 2";
$query = "SELECT PRODOTTO,count(*) AS col_num FROM extrabanca_conti WHERE MESE = 'gennaio' GROUP BY PRODOTTO ASC";
$result = mysql_query ($query) or trigger_error(mysql_error()." in ".$query);
while($dbres = mysql_fetch_assoc($result))
{
$example_data[] = array($dbres['col_num'],$dbres['PRODOTTO']);
}
$graph->SetDataValues($example_data);
$graph->SetLegendPixels(1,5,false);
//$graph->SetLegend($legend);
//Draw it
$graph->DrawGraph();

con questo ho un empty dataset...quindi qualcosa nel array non va o sbaglio?
 
Nello script in cui passi manualmente i dati un array è composto da tre valori. Nella versione dinamica invece l'array è composto solamente da due valori. Manca un campo.

l'array passato manualmente era un esempio ( del manuale).
riassumendo, ho in un db una colonna con n valori , ( alcune si ripetono), e voglio avere in grafico la percentuale di ogni valore.
la mia idea era quindi di creare un array contenente, nome e il numero di volte che è ripetuto) e per avere qualcosa del genere:
val1, num1
val2,num2,
val3,num3.
e avere il grafico in percentuale.
cosa sbaglio?
 
un ultima cosa

se volessi passare il nome del campo alla leggenda come recuperarlo dal' array?
riesco a passare il numero del count cosi.
PHP:
while($dbres = mysql_fetch_assoc($result))
{
$i = 0;
$example_data[] = array($i,$dbres['col_num'],$dbres['PRODOTTO']);
$legend[] = $dbres['col_num'];
$i++;
}
$graph->SetDataValues($example_data);
 
non mi sono spiegato bene

ho un tabella di questo (id, prodotto)
e ho
id1, prodotto1,
id2,prodotto1,
id3,prodotto3,
id4,prodotto2 etc... quindi voglio avere il numero di la percentuale di presenza per prodotto . e mettere nella legenda del graffico il nome del prodotto.
non so se sia più chiaro.
tra l'altro faccendo un $vardum ottengo un bool(false)...anche se il grafico poi appare correttamente ( a parte la leggenda ovviamente).
adesso avendo un bool(false) qualcosa non va nella mia query...non so più cosa pensare.
Non so se sono chiaro.
 

Discussioni simili