Problema aggiornamento grafici in jpgraph

peppepegasus

Utente Attivo
20 Ott 2006
108
0
0
Ciao,

Ho un bel problema un po complicato che coinvolge diversi aspetti, cerco di spiegare al meglio cosa ho e cosa devo fare e dove è il problema nel suo intero.
Descrivo brevemente il sito su cui sto lavorando.
Ci sono diverse pagine, quella su cui sto intervenendo è questa: attraverso un menù a tendina si possono scegliere di visualizzare diverse misure, il giorno, mese, anno di cui si vuole visualizzare la misura. Il codice relativo a questa parte è questo:


Pagina sod.php
PHP:
if ($_REQUEST[tipo_dati]=="profiles") {
        $data_misura=$_REQUEST[anno]."-".$_REQUEST[mese]."-".$_REQUEST[giorno];
        $stringa_ricerca_ora="";

        if (isset($_REQUEST[ora])) $stringa_ricerca_ora = " AND ora = '".$_REQUEST[ora]."' ";

        $query_mostra="SELECT * FROM dati_sodarwf WHERE data='$data_misura' $stringa_ricerca_ora order by ora;";
                        $result_mostra=mysql_query($query_mostra) or die ("impossibile eseguire: $query_mostra");
                        $row_mostra=mysql_fetch_array($result_mostra);
                        $ora=$row_mostra[ora];
                        $_REQUEST[ora]=$row_mostra[ora];

?>

Fatta la selezione delle misure che voglio, i dati (che sono sono raccolti in un database) li devo riportare in dei grafici, a tale scopo uso jpgraph.
Il codice che prende i dati dal db e costruisce questi grafici è questo:

Pagina immagini.php
PHP:
<?php
include_once("../include/config.php");
include ( "../jpgraph/src/jpgraph.php");
include ("../jpgraph/src/jpgraph_line.php");

        $contatore=0;
        $conta_null=0;

// Dati dal Form

        $year=$_REQUEST[anno];
        $month=$_REQUEST[mese];
        $day=$_REQUEST[giorno];
        $orario=$_REQUEST[ora];
        $variabile=$_REQUEST[variabile];

        $contatore_ora_precedente=0;
        $ora_precedente="";
        $vettore_variabile="";
        $vettore_alt="";

// Query per ricavare l'altitudine e la variabile

        $query_mostra="SELECT altitude,$variabile FROM dati_sodarwf WHERE data='$year-$month-$day' AND ora='$orario';";
        $result_mostra=mysql_query($query_mostra) or die ("impossibile eseguire: $query_mostra");
        while($row_mostra=mysql_fetch_array($result_mostra)){

$vettore_variabile[$contatore]="";
$vettore_alt[$contatore]="";

                $vettore_variabile[$contatore]=$row_mostra[$variabile];
                if($row_mostra[$variabile]="") {
                                $vettore_variabile[$contatore]="";
                                $conta_null++;
                }
                $vettore_alt[$contatore]=$row_mostra[altitude];
                $vettore_label[$contatore]=$row_mostra[$variabile];
                $contatore++;
        }

        $query_parametri="SELECT * FROM tabelle_campi WHERE nome_campo='$variabile' AND id_tabella = '4' ;";
        $result_parametri=mysql_query($query_parametri) or die ("impossibile eseguire: $query_parametri");
        $row_parametri=mysql_fetch_array($result_parametri);

// Richiamo le function per i 5 grafici

switch($variabile)
{
        case "speed": $graf1 = grafico_speed( $vettore_alt, $vettore_variabile, $row_parametri, $vettore_label, $orario ); //speed,alt
        break;
        case "direction": $graf2 = grafico_dir( $vettore_alt, $vettore_variabile, $row_parametri, $vettore_label ); //dir,alt
        break;
        case "vertical_velocity": $graf3 = grafico_vert_vel( $vettore_alt, $vettore_variabile, $row_parametri, $vettore_label ); //vert_vel,alt
        break;
        case "vertical_intensity": $graf4 = grafico_int( $vettore_alt, $vettore_variabile, $row_parametri, $vettore_label ); //intensity,alt
        break;
        case "vertical_sn": $graf5 = grafico_vert_sn( $vettore_alt, $vettore_variabile, $row_parametri, $vettore_label ); //vert_sn,alt
        break;
}

// FUNCTION Per Generare i 5 Grafici
// ***********************************
// Function per richiamare il Primo grafico: (speed,alt)

function grafico_speed( $vettore_alt, $vettore_variabile, $row_parametri, $vettore_label, $orario ) {

// Genero il grafico X,Y

$titolo=$row_parametri[descrizione_IT].$orario;
if ($Lingua == "EN") $titolo=$row_parametri[descrizione_EN];

$label_asse_y= $titolo." (".$row_parametri[unita_misura]." )";

$label_asse_y= togliaccenti($label_asse_y);
$titolo= togliaccenti($titolo);

// Create the graph. These two calls are always required
$graph  = new Graph(200, 400,"auto");

$graph->title->Set ($titolo);
$graph->SetScale('intlin'); // A PUNTI

// setta i margini
$graph->SetMargin(60,40,40,40);

// Create the linear plot
// LINEARE $lineplot ->SetColor("blue");

$graph->xaxis-> SetTickLabels($vettore_label);
$graph->xaxis-> title->Set("$label_asse_y" );
// distanzia la label verticale dall'asse
$graph->yaxis-> SetTitlemargin(40);
$graph->yaxis-> title->Set("Altitude (m)");

$sp1=new LinePlot($vettore_alt, '$vettore_variabile');

$sp1->mark->SetType(MARK_FILLEDCIRCLE);
$sp1->mark->SetFillColor("black");
$sp1->mark->SetWidth(2);

$graph->Add($sp1); // linea con cerchietti

// Display the graph
$graph->Stroke();
return;
} //fine function primo grafico

realizzo 5 function (qui ne ho postata solo una) con la quale realizzo i 5 grafici (ogni grafico ha una sua peculiairtà di colori, di linee etc e ho preferito fare 5 function distinte).

I grafici vengono richiamati dalla pagina sod.php come immagini, ho infatti 5 righe così:

Codice:
<img src="blocchi_ricerca/immagini_sodar.php?anno=<?=$_REQUEST[anno]?>&mese=<?=$_REQUEST[mese]?>&giorno=<?=$_REQUEST[giorno]?>&ora=<?=$_REQUEST[ora]?>&variabile=speed" border="0" />
<img src="blocchi_ricerca/immagini_sodar.php?anno=<?=$_REQUEST[anno]?>&mese=<?=$_REQUEST[mese]?>&giorno=<?=$_REQUEST[giorno]?>&ora=<?=$_REQUEST[ora]?>&variabile=direction" border="0" />
<img src="blocchi_ricerca/immagini_sodar.php?anno=<?=$_REQUEST[anno]?>&mese=<?=$_REQUEST[mese]?>&giorno=<?=$_REQUEST[giorno]?>&ora=<?=$_REQUEST[ora]?>&variabile=vertical_velocity" border="0" />
<img src="blocchi_ricerca/immagini_sodar.php?anno=<?=$_REQUEST[anno]?>&mese=<?=$_REQUEST[mese]?>&giorno=<?=$_REQUEST[giorno]?>&ora=<?=$_REQUEST[ora]?>&variabile=vertical_intensity" border="0" />
<img src="blocchi_ricerca/immagini_sodar.php?anno=<?=$_REQUEST[anno]?>&mese=<?=$_REQUEST[mese]?>&giorno=<?=$_REQUEST[giorno]?>&ora=<?=$_REQUEST[ora]?>&variabile=vertical_sn" border="0" />

In base ai dati del form compilato dall'utente, si va nel db, si prendono i dati e si fanno i grafici. Un appunto sui dati: nel db ci sono i vari dati, essenzialmente l'altitudine, la velocità, la direzione etc. Questi sono poi organizzati per data e ora. Ogni 10 minuti ho dei dati da rappresentare. Quindi quando l'utente sceglie il giorno viene visualizzato il grafico della prima serie di dati, in base al primo orario per cui ci sono dati nel db.
é necessario, allora, visualizzare nei grafici tutte le serie di dati negli orari e nei giorni selezionati e presenti nel db. questo avviene in base a un sistema di frecce che permettono di avanzare e tornare indietro con l'orario. Questo sistema a me va bene, il problema è questo:
se avanzo con l'ora (11-11.10-11.20...) con il sistema di frecce, i grafici non mi cambiano!!!! Ho fatto vari controlli: l'ora passata dalla pagina sod.php alla pagina immagini.php va bene; i dati prelevati dal db sono esatti..non so più quale cosa controllare che mi genera questo problema. Anche perchè i grafici vanno un pò per conto loro nonostante i dati prelevati siano quelli esatti. Ma di questo forse è meglio riparlarne dopo aver risolto questo problema che non si aggiornano i dati nei grafici.
Allego le due schermate della pagina in questione prima la parte superiore con il form di scelta giorno etc e poi la parte inferiore dei grafici dove c'è il sistema di frecce descritto.
C'è qualcuno di buona volontà che può darmi una mano a risolvere il problema???? :dhò:
grazie 1000.
ciao.
 

Allegati

  • Schermata.jpg
    Schermata.jpg
    53,2 KB · Visite: 743
  • Schermata1parte.jpg
    Schermata1parte.jpg
    32,2 KB · Visite: 297
Ultima modifica:

Discussioni simili