Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Chartjs e mysql

  1. #1

    Chartjs e mysql

    salve!
    sto iniziando a usare Chartjs per creare grafici.
    questo un esempio di base funzionante:
    codice:
    <canvas id="chart_entrate" width="400" height="400"></canvas>
    <script>
        var pieData = [
            {
                value: 30,
                color: "#F38630"
            },
            {
                value: 50,
                color: "#E0E4CC"
            },
            {
                value: 100,
                color: "#69D2E7"
            }
    
        ];
        var myPie = new Chart(document.getElementById("chart_entrate").getContext("2d")).Pie(pieData);
    </script>
    mi chiedevo se fosse possibile prendere i dati direttamene da un database in modo da renderli dinamici e non statici.

  2. #2
    ok.
    per i valori mi pare di capire che gli passo in formato json.
    poi ci starebbe il "problema" del colore, e cioè come darglielo sempre diverso.
    da un primo tentativo banale sono riuscito ma sempre con lo stesso colore.
    il che non è una granchè come cosa.

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non conosco nello specifico lo script, ma se i dati li carichi con ajax in formato json puoi caricare sia il value che il color
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    mi sa che c'è qualcosa che sbaglio.
    allora questo un esempio della doc ufficiale:
    codice:
        var pieData2 = [
            {
                value: 30,
                color: "#F38630"
            },
            {
                value: 50,
                color: "#E0E4CC"
            },
            {
                value: 100,
                color: "#69D2E7"
            }
    
        ];
    tramite ajax io ottengo questo:
    codice:
    [{"value":5440.96,"color":"#69D2E7"},{"value":1000,"color":"#69D2E7"},{"value":658,"color":"#69D2E7"},{"value":600,"color":"#69D2E7"},{"value":500,"color":"#69D2E7"},{"value":500,"color":"#69D2E7"},{"value":500,"color":"#69D2E7"},{"value":400,"color":"#69D2E7"},{"value":391,"color":"#69D2E7"}]
    mi sembra giusto.
    questa la funzione:
    codice:
    var pieData;
    
        $(document).ready(function() {
            $.ajax({
                url: url,
                type: 'POST',
                dataType: 'json',
                success: function(response) {
                    pieData = response;
                }
            });
        });
    eppure quando uso questa come sturttura dati non funziona.
    voi trovate differenze o secondo voi sto sbagliando nel modo di prendere i dati?

  5. #5
    mi pare di aver capito che il problema sia che valorizzo la variabile dantro a document.ready.
    ho provato così ma non ha funzionato lo stesso:
    codice:
        var NS = {};
        //var pieData = '';
        $(document).ready(function() {
            $.ajax({
                url:url,
                type: 'POST',
                dataType: 'json',
                success: function(response) {
                    NS.pieData = response;
                }
            });
        });
        
        console.log('DATA: ' + NS.pieData)

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    dati orginali
    {
    value: 30,
    color: "#F38630"
    },
    dati ajax
    {"value":5440.96,"color":"#69D2E7"}
    domanda le virgolette che hai in ajax possono influire?
    Prova a formattare i dati da php esattamente come sono in originale creadoti una stringa simil json ("[{value:5440.96,color:'#69D2E7'},{etc...}]")
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    no no le virgolette andrebbero bene, ho provato a mano.

    ma il problema non è quello, è che fuori dal document.ready la viaribile non risulta valorizzata, mentre all'interno si.

    mi pare di aver capito che sia un problema di tempistica.
    cioà la chiamata ajax viene fatta solo dopo che la pagina è caricata, e quindi pieData risulta cmq vuota.

  8. #8
    in parte avrei risolto così:
    codice:
    $(document).ready(function() {
            $.ajax({
                url: url,
                type: 'POST',
                dataType: 'json',
                success: function(response) {
                    var pieData = response;
                    console.log(response)
                    chart(pieData);
                }
            });
        });
    
        function chart(d) {
            console.log(d)
            var pieOptions = {
                //Boolean - Whether we should show a stroke on each segment
                segmentShowStroke: true,
                //String - The colour of each segment stroke
                segmentStrokeColor: "red",
                //Number - The width of each segment stroke
                segmentStrokeWidth: 2,
                //Boolean - Whether we should animate the chart	
                animation: true,
                //Number - Amount of animation steps
                animationSteps: 100,
                //String - Animation easing effect
                animationEasing: "easeOutBounce",
                //Boolean - Whether we animate the rotation of the Pie
                animateRotate: true,
                //Boolean - Whether we animate scaling the Pie from the centre
                animateScale: false,
                //Function - Will fire on animation completion.
                onAnimationComplete: null
            }
            var myPie = new Chart(document.getElementById("chart_entrate").getContext("2d")).Pie(d, pieOptions);
        }
    solo che adesso il risultato che mi viene dato è questo:
    codice:
    [Object { value=
    
    "5440.96"
    
    ,  color=
    
    "#69D2E7"
    
    }, Object { value=
    
    "1000.00"
    
    ,  color=
    
    "#69D2E7"
    
    }, .............
    insomma con queli Object che danno fastidio.
    avete idea del perchè?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.