Qualcuno ha mai creato grafici "google chart" collegati a database mysql?

samurai.sette

Utente Attivo
17 Dic 2015
234
6
18
Ciao a tutti.

Come da titolo mi chiedevo se qualcuno avesse mai realizzato grafici "google chart" collegati a database mysql.
Io ne ho realizzati diversi e fin qui nessun problema; il problema è nato quando ho deciso di evolvere i grafici inserendo al loro interno i "Controls and Dashboards". Con questi ultimi ho la possibilità di interagire con il grafico senza dover aggiornare la pagina.

Il problema è questo: quando carico la pagina il grafico mi mostra tutti i punti presenti nel database mysql (fin qui tutto OK); nella pagina è presente un bottone chiamato "Select range [12, 15]" e se lo clicco, il grafico mi dovrebbe essere ricostruito dal punto 12 al punto 15. Se tra il punto 12 e il punto 15 è presente un valore inferiore a 12 o superiore a 15, questo mi viene escluso dal grafico che mi andrà a ricostruire. Di conseguenza il grafico che ottengo è sbagliato perché mancano molti punti esclusi.

Secondo voi dove può essere il problema? Nella query?

Inserisco il codice php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Dashboards</title>
</head>

<body>

<?php

// connessione al server ed al database

  $con = mysql_connect ("localhost", "root","password") or die ("Connessione al server fallita!!!".mysql_error()); 
   
  $db = mysql_select_db ("database", $con); 
   
  if (!$db) 
  { 
    die ("Connessione al database fallita!!!".mysql_errore()); 
  }

  $sth = mysql_query ("SELECT * FROM tabella");
  
  $rows = array();

//flag is not needed
  $flag = true;
  $table = array();

// "COSTRUISCO" INDICANDO I NOMI DELLE COLONNE DELLA TABELLA - UNA DEVE ESSERE IN FORMATO STRINGA E UNA IN FORMATO NUMBER

  $table['cols'] = array(
    
    array('label' => 'id', 'type' => 'string'),
    array('label' => 'lettura', 'type' => 'number')
 
);

  $rows = array();
 
    while($r = mysql_fetch_assoc($sth))
    {
      $temp = array();

      $temp[] = array('v' => (string) $r['id']); 
      $temp[] = array('v' => (float) $r['lettura']);
      $rows[] = array('c' => $temp);
    }
 
  $table['rows'] = $rows;
  $jsonTable = json_encode($table);

?>

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['corechart', 'controls']});
      google.charts.setOnLoadCallback(drawStuff);

      function drawStuff() {

        var dashboard = new google.visualization.Dashboard(
          document.getElementById('programmatic_dashboard_div'));

        // We omit "var" so that programmaticSlider is visible to changeRange.
        programmaticSlider = new google.visualization.ControlWrapper({
          'controlType': 'NumberRangeFilter',
          'containerId': 'programmatic_control_div',
          'options': {
            'filterColumnLabel': 'lettura',
            'ui': {'labelStacking': 'vertical'}
          }
        });

       programmaticChart  = new google.visualization.ChartWrapper({
        'chartType': 'LineChart',
        'containerId': 'programmatic_chart_div',
        'options': {
          'width': 700,
          'height': 500,
          'legend': 'none',
          'chartArea': {'left': 15, 'top': 15, 'right': 0, 'bottom': 0},
          'pieSliceText': 'value'
        }
      });
  
      var data = new google.visualization.DataTable(<?=$jsonTable?>);
      
      dashboard.bind(programmaticSlider, programmaticChart);
      dashboard.draw(data);
    }

    </script>

    <div id="programmatic_dashboard_div" style="border: 1px solid #ccc">
      <table class="columns">
        <tr>
          <td>
            <div id="programmatic_control_div" style="padding-left: 2em; min-width: 250px"></div>
            <div>
              <button style="margin: 1em 1em 1em 3em" onclick="changeRange();">
                Select range [12, 15]
              </button><br/>
            </div>
            <script type="text/javascript">
              function changeRange() {
                programmaticSlider.setState({'lowValue': 12, 'highValue': 15});
                programmaticSlider.draw();
              }
            </script>
          </td>
          <td>
            <div id="programmatic_chart_div"></div>
          </td>
        </tr>
      </table>
    </div>

</body>

</html>
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
"Select range [12, 15]" e se lo clicco, il grafico mi dovrebbe essere ricostruito dal punto 12 al punto 15. Se tra il punto 12 e il punto 15 è presente un valore inferiore a 12 o superiore a 15, questo mi viene escluso dal grafico che mi andrà a ricostruire. Di conseguenza il grafico che ottengo è sbagliato perché mancano molti punti esclusi.

io uso Highcharts, ma credo che ciò che descrivi prescinde dal software,

l'asse delle ascisse ha valori monotòni quindi ciò che hai scritto deve funzionare perché evidenzi una parte dell'asse

l'asse delle ordinate riporta valori, permettimi, casuali, quindi non vale quanto hai scritto

su quale asse poni il filtro ?
 

samurai.sette

Utente Attivo
17 Dic 2015
234
6
18
Ciao marino51, grazie per la risposta. Francamente non ho ben capito ciò che mi hai scritto.

Da quello che ho capito mi chiedi su quale asse applico il "filtro". Se è questo quello che mi chiedi lo applico sull'asse delle ascisse.
Scusa ma il resto non l'ho proprio capito. Potresti rispiegarmelo usando altre parole?

Ciao, grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
il grafico mi dovrebbe essere ricostruito dal punto 12 al punto 15. Se tra il punto 12 e il punto 15 è presente un valore inferiore a 12 o superiore a 15, questo mi viene escluso dal grafico che mi andrà a ricostruire

il filtro lo applico sull'asse delle ascisse

sull'asse delle ascisse, i valori sono continuamente crescenti o decrescenti, indipendentemente dalla scala (a meno che il grafico abbia assi scambiati)

quindi non dovresti avere
inferiore a 12 o superiore a 15
nell'intervallo che stai considerando
 

samurai.sette

Utente Attivo
17 Dic 2015
234
6
18
Ciao Marino51. Ho riletto il mio post di apertura e credo di non essermi spiegato bene, per cui ti faccio un esempio pratico.

Sull'asse x ho riportato il valore "LETTURA" e la scala va da 1 a 14 mentre sull'asse y ho riportato il valore "TEMPERATURA" e la scala va da 10° a 17°.
All'apertura della pagina il grafico mi viene costruito correttamente con tutte le 14 letture della temperatura.
Quando clicco sul bottone "Select range [12, 15]" mi deve ricostruire il grafico dalla temperatura di 12° alla temperatura di 15° includendo tutti i valori compresi nel range. Il grafico lo ricostruisce ma se, ad esempio, tra il range [12, 15] c'è una temperatura di 10° o 16°, questi vengono esclusi dal grafico. Questo non va bene, nel range [12, 15] mi deve considerare tutti i valori altrimenti il grafico è sbagliato.

Ciao
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
ti sei sempre spiegato benissimo, ciò che hai scritto nel primo post è esattamente quello che ripeti nell'ultimo,
penso che escludendo i valori eccedenti i due limiti, il grafico sia corretto,

potremmo discutere se, non rappresentando i punti esclusi, l'asse delle ascisse subisce alterazioni (valori intermedi omessi), ma se l'asse delle ascisse dovesse mantenere la continuità, credo che il grafico sia corretto

paradossalmente se il primo valore di temperatura fosse 12 e l'ultimo 15, con i tuo ragionamento, il grafico non cambierebbe con l'attivazione del filtro
 

samurai.sette

Utente Attivo
17 Dic 2015
234
6
18
Ciao marino51.

Per quanto riguarda il primo punto del tuo ultimo post l'asse delle ascisse mantiene la continuità e di conseguenza il grafico senza i punti esclusi è "corretto" (se così possiamo dire...).

Per quanto riguarda l'altro punto invece ti sbagli. Se inizialmente tra la temperatura di 12° e quella di 15° ci sono ad esempio 7 letture, in origine mi disegna un grafico con un certo andamento; se clicco "Select range [12, 15]" e mi elimina ad esempio 3 letture l'andamento del grafico è completamente diverso dal precedente.

Detto questo sai dove posso intervenire per evitare che vengano eliminate le letture?

Ciao, grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.041
192
63
Lombardia
Per quanto riguarda l'altro punto invece ti sbagli. Se inizialmente tra la temperatura di 12° e quella di 15° ci sono ad esempio 7 letture, in origine mi disegna un grafico con un certo andamento; se clicco "Select range [12, 15]" e mi elimina ad esempio 3 letture l'andamento del grafico è completamente diverso dal precedente.
la mia idea è in accordo con il risultato che ottieni, ma perché diversa dalla tua non è necessariamente sbagliata
Detto questo sai dove posso intervenire per evitare che vengano eliminate le letture?
no, probabilmente altri possano suggerire soluzioni proficue
ciao

scusa se mi sono permesso di intervenire senza una soluzione
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Qualcuno ha mai provato Fastcomet? Server Dedicati e VPS 1
P [Gratuito][Cerco] qualcuno per fare menu a tendina ottimizzato per mobile-responsive con css e html Offerte e Richieste di Lavoro e/o Collaborazione 3
I namecheap.com, qualcuno lo usa? Hosting 7
S Qualcuno si intende di lettori codici a barre? Presentati al Forum 1
S Creare videochat ce qualcuno Offerte e Richieste di Lavoro e/o Collaborazione 3
F Cerco qualcuno per un progetto java gratuito Java 1
S Cerco qualcuno che realizzi due pagine web per me Offerte e Richieste di Lavoro e/o Collaborazione 3
S [PHP] Qualcuno utilizza i grafici Google charts? PHP 1
M Qualcuno vende profili autenticati? Annunci servizi di Social Media Marketing 0
E Qualcuno puo' autarmi Guadagnare col Sito 8
filippino Numero Visualizzazioni falsate? Qualcuno ha avuto lo stesso problema? Google Analytics 2
L xmlrpc leggere le risposte. qualcuno mi aiuta? PHP 1
F [cerco] [non retribuito] qualcuno che mi sistemi il blog Offerte e Richieste di Lavoro e/o Collaborazione 3
otto9due Qualcuno mi dice dove sbaglio in questa classe .. PHP 4
R Ciao a tutti! sono nuovo e spero che qualcuno possa aiutarmi ad imparare a usare un mac book apple Presentati al Forum 1
Bostik Cerco qualcuno che mi insegni i fondamenti della gestione di un webserver Web Server 1
G qualcuno cortesemente può aiutarmi? PHP 0
glm2006ITALY Qualcuno conosce il CMS Quick.Cart? CMS (Content Management System) 0
M Chiedo una mano gentilmente se qualcuno mi aiuta. PHP 1
M SEOProfiler: qualcuno lo ha provato? SEO e Posizionamento 0
Task Mc Dove sbaglio? qualcuno mi può aiutare? Classic ASP 2
A Qualcuno può dirmi i codicI di questI esercizi???? PHP 4
G Qualcuno mi può spiegare? PHP 1
D Form di contatto e relativo file in php. Qualcuno mi salvi. PHP 9
S Qualcuno mi sa dire a cosa serve precisamente questo script? Javascript 1
Web Designer La crisi uccide, ma gliene frega a qualcuno? Discussioni Varie 1
voldemort Hipay: qualcuno lo ha provato? SEO e Posizionamento 0
voldemort DealExtreme: lo conoscete? qualcuno lo ha provato? opinioni? Discussioni Varie 0
novello88 Qualcuno ha provato AddyOn? Guadagnare col Sito 3
novello88 Qualcuno conosce VHosting Solution? Hosting 0
H Qualcuno mi può indicare programmi facili per realizzare siti web facilmente HTML e CSS 14
P C'è qualcuno che si intende di fotografia? Discussioni Varie 20
voldemort Qualcuno conosce il provider Vola? Hosting 0
J Qualcuno Può AIUTARMI Ajax 0
M Joomla: configurare jfusion con Moodle [era: Qualcuno sa usare jfusion] Joomla 1
D Qualcuno mi saprebbe aiutare ad installare JavaBridge con Tomcat 5.5 e win xp? Apache 13
M Qualcuno si è agganciato alla mia rete wireless? Reti LAN e Wireless 3
N Come si fa aiuto ce qualcuno la fuori ??! HTML e CSS 1
S Qualcuno lo ha provato BeRuby? Guadagnare col Sito 3
P Devo modificare una pagina ma non riesco... qualcuno mi aiuta? PHP 1
SolidSnake4 qualcuno sa come funziona la libreria gettext PHP 1
B qualcuno mi aiuti Flash 0
M Qualcuno riesce ad aiutarmi con questo script? PHP 0
G A qualcuno funzionano i colori multipli adsense? Google AdSense 0
S C'è qualcuno che ha testato lo script AGWS Directory - Gestione Link? PHP 1
D Disperazione CSS, qualcuno mi aiuta a ridurre le dimensioni? HTML e CSS 1
E Qualcuno può aiutarmi? PHP 3
T Qualcuno mi aiuto con Word? Windows e Software 1
S qualcuno si è intrufolato sul mio sito Sicurezza e Virus 10
MikiBella Qualcuno sai come si fa con TradeDoubler? Guadagnare col Sito 1

Discussioni simili