[RISOLTO] HighChart e PHP

Alex@1983

Utente Attivo
9 Mag 2015
126
2
18
Ciao a tutti,

qualcuno di voi usa HighChart interfacciato con MySql ?

io ho tentato di approcciarmici ma , francamente di javascript non ci capisco troppo e non ho idea di come modificare il codice di base ( lo riporto sotto) per far si che vada a pescarmi i dati dal DB

Mi date uno spunto ?

Codice:
<script type="text/javascript">

Highcharts.chart('containergrafici', {
    chart: {
        type: 'line'
    },
    title: {
        text: 'Mensili'
    },
    subtitle: {
        text: ''
    },
    xAxis: {
        categories: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
    },
    yAxis: {
        title: {
            text: 'Flussi'
        }
    },
    plotOptions: {
        line: {
            dataLabels: {
                enabled: true
            },
            enableMouseTracking: false
        }
    },
    series: [{
        name: '2016', // A questo punto punto vorrei riuscire ad estrarre i dati dal DB 
        data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] // Questi sono i dati di esempio di HighChart
    }, {
        name: '2017',   // A questo punto punto vorrei riuscire ad estrarre i dati dal DB 
        data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]  // Questi sono i dati di esempio di HighChart
    }]
});

   </script>
 
i dati vanno presi con un linguaggio idoneo a gestire il db esempio PHP,
poi possono essere passati a javascript per Highcharts in questo modo
PHP:
$(document).ready(function() {

  var    SPW_color       = Highcharts.getOptions().colors;

  var    SPW_Chart       = '<?php echo ( empty($SPW_Chart)       ? ''         : $SPW_Chart );       ?>',
         SPW_ChartInv    = '<?php echo ( empty($SPW_ChartInv)    ? false      : $SPW_ChartInv );    ?>',
         SPW_Title       = '<?php echo ( empty($SPW_Title)       ? 'Title'    : $SPW_Title );       ?>',
         SPW_SubTitle    = '<?php echo ( empty($SPW_SubTitle)    ? 'SubTitle' : $SPW_SubTitle );    ?>',
         SPW_LabelsOnCol = '<?php echo ( empty($SPW_LabelsOnCol) ? false      : $SPW_LabelsOnCol ); ?>',
         SPW_Stacking    = '<?php echo ( empty($SPW_Stacking)    ? false      : $SPW_Stacking );    ?>';

  var    SPW_xAxis       = <?php echo json_encode($SPW_xAxis); ?>;
  var    SPW_yAxis       = <?php echo json_encode($SPW_yAxis); ?>;
  var    SPW_ySeries     = <?php echo json_encode($SPW_ySeries); ?>;

  var    Len_yAxis       = SPW_yAxis.length,
         Len_ySeries     = SPW_ySeries.length,
         i               = 0;

  var    Chart_yAxis     = [],
         Chart_ySeries   = [];

    for(i=0; i < Len_yAxis;   i++) { get_yAxes();  }
    for(i=0; i < Len_ySeries; i++) { get_ySerie(); }

$('#container').highcharts
    ({
....
....
    title:
        {
        text: SPW_Title
        },
....
....

così facendo, ho costruito un'unica struttura necessaria per gestire circa 30 grafici di formato diverso
ho dovuto costruire due strutture specifiche per grafici di tipo waterfall rispettivamente
waterfall singolo, waterfall ripetuto nello stesso grafico

come detto quello che si può fare è creare un'unica struttura inserendoci i dati necessari a parte grafici molto specifici

(cambiato formato codice in php per leggibilità)
 
Ultima modifica:
Ciao Marino, grazie per la risposta,

il mio problema è che non so inserire nel file di HighChart che ho postato prima le query che gia ho in PHP

Esempio:
PHP:
$sqlMarzo = "SELECT SUM(ingressi) as somma FROM DB WHERE YEAR (data) = YEAR(CURDATE()) AND MONTH (data) = '03'";                    //
$sqlMar = mysql_query($sqlMarzo);                                            //
list($sommaMar) = mysql_fetch_array($sqlMar);      

        $numberMar = $sommaMar;
        $formato_per_migliaia_Mar = number_format($numberMar, 0, ',', ' ');  

$sqlAprile = "SELECT SUM(ingressi) as somma FROM DB WHERE YEAR (data) = YEAR(CURDATE()) AND MONTH (data) = '04'";                    //
$sqlApr = mysql_query($sqlAprile);                                            //
list($sommaApr) = mysql_fetch_array($sqlApr);      

        $numberApr = $sommaApr;
        $formato_per_migliaia_Apr = number_format($numberApr, 0, ',', ' ');

$sqlMaggio = "SELECT SUM(ingressi) as somma FROM DB WHERE YEAR (data) = YEAR(CURDATE()) AND MONTH (data) = '05'";                    //
$sqlMag = mysql_query($sqlMaggio);                                            //
list($sommaMag) = mysql_fetch_array($sqlMag);
 
non so inserire nel file di HighChart che ho postato prima le query che gia ho in PHP
se leggi il mio esempio, vedi che si tratta di uno script js,

viene richiamato all'interno dell'html, a sua volta richiamato dallo script php,
dove ci sono tutte le query ed elaborazioni per la preparazione delle variabili necessarie ad Highcharts

guardando al titolo della chart,

lo script php ne determinerà il valore nella variabile $SPW_Title, (ma può valere per gli assi, come per le serie di dati)

l'istruzione seguente passa il titolo allo script js (vedi anche tutte le altre variabili)
HTML:
SPW_Title = '<?php echo ( empty($SPW_Title) ? 'Title' : $SPW_Title ); ?>',

con l'associazione seguente, il titolo viene incluso nella struttura voluta da Highcharts (allo stesso modo vengono associati tutti gli altri valori anche se, per assi e serie di dati, la cosa è un po' più complessa, per la quantità dei parametri necessari)
HTML:
title:
    {
    text: SPW_Title
    },

mi sembrano chiari i passaggi .....

un secondo esempio,
https://forum.mrw.it/threads/php-creare-chart-con-highchart.46770/#post-182958
 
Ultima modifica:
  • Like
Reactions: Alex@1983
Ottimo Marino51 !!!!!

Ci ho messo un po ad entrare nel merito.... ma con le tue dritte adesso il grafico di HighChart è perfetto e perfettamente dimanico!!!

Grazie mille per l'aiuto !!!
 

Discussioni simili