Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39

    grafico php da query mysql, come??

    Salve a tutti, avrei la necessità di realizzare un grafico per le statistiche di vendita. Espongo brevemente ciò che vorrei realizzare. Vorrei realizzare un grafico a torta per visualizzare la percentuale di vendita effettuata dai dipendenti in un determinato periodo di tempo (ad es. 3 mesi), cioè su un totale di 1000€ incassati dal negozio, 100€sono stati fatti incassare da Mario, 500€ da Luca, 350€ da Giovanni, .....
    Così io alla fine posso calcolarmi quanto dare di provvigione sulle vendite ai dipendenti.
    Allego il codice che ho scritto:

    Codice PHP:
    require_once("gdgraph.php");
    $gdg = new GDGraph(500,300,"Vendite");

    //utenti autorizzati alle vendite
    $Mario="Mario";
    $Luigi="Luigi";
    $Giovanni="Giovanni";
    $Riccardo="Riccardo";
    $Luca="Luca";

    $arr = Array($Mario => Array(70,200,100,1000),
            
    $Luigi => Array(30,200,200,10),
            
    $Giovanni => Array(20,23,255,100),
                    
    $Luca => Array(500,123,255,200)
            );

    $gdg->pie_graph($arr); 
    Ovviamente per adesso i dipendenti sono passati all'array in maniera statica. Per farlo in maniera dinamica?
    Questa è la query che mi serve per recuperare le info sulle vendite:

    Codice PHP:
    $query "SELECT  F.data_emissione_fattura, F.dare, O.user
              FROM fatture_vendita AS F JOIN ordini_clienti AS O ON O.id_ordine=F.id_ordine"
    ;
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))

    //come creo l'array $arr dell'esempio precedente??


  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Ti ho creato una tabella essenziale con i dati fondamentali perche' sia piu chiaro.
    Poi naturalmente immagino che avrai gli utenti e le fatture su due tabelle diverse e dovrai fare le join come
    credo tu abbia gia fatto.

    Comunque il concetto e' fare un group by per utente cosi ti viene fuori 1 riga per utente.
    E visualizzare sum(importo) al posto di importo.
    Cosi avrai una solo riga per utente con il totale dell'importo.

    Aggiungi un where sulle date delle fatture per visualizzare solo un lasso di tempo ed ecco che il gioco e' fatto

    Codice PHP:
    -- 
    -- 
    Struttura della tabella `fatture`
    -- 

    CREATE TABLE `fatture` (
      `
    idFatturaint(10unsigned NOT NULL auto_increment,
      `
    utentevarchar(10NOT NULL,
      `
    importoint(11NOT NULL,
      `
    datadate NOT NULL,
      
    PRIMARY KEY  (`idFattura`)
    ENGINE=MyISAM  DEFAULT CHARSET=latin1;

    -- 
    -- 
    Dump dei dati per la tabella `utenti`
    -- 

    INSERT INTO `utenti` (`idFattura`, `utente`, `importo`, `data`) VALUES 
    (1'pippo'100'2008-08-10'),
    (
    2'pluto'60'2008-08-10'),
    (
    3'paperino'40'2008-08-11'),
    (
    4'pluto'60'2008-08-11'),
    (
    5'paperino'300'2008-09-04'),
    (
    6'pippo'100'2008-09-04');



    SELECT utente,SUM(importoFROM `utentiWHERE `data`>='2008-08-01' and `data`<'2008-09-01' GROUP BY utente 

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    Ciao, innanzitutto grazie per la risposta
    Ho un altro problema, credo con l'array...

    Codice PHP:
    require_once("gdgraph.php");
    $gdg = new GDGraph(500,300,"Vendite");

    $arr = array();

    $query "create view vendite_utenti (id_fattura, utente, importo, data)
        AS
        SELECT F.id_fattura, O.user_agente, F.dare, F.data_emissione_fattura
        FROM fatture_vendita As F JOIN ordini_clienti AS O ON F.id_ordine=O.id_ordine
        WHERE F.data_emissione_fattura IS NOT NULL"
    ;
        
    mysql_query($query$db) or die(mysql_error());
        
    $query "SELECT utente,SUM(importo) AS importo
              FROM vendite_utenti WHERE data>='2008-06-01' 
              AND data<'2008-09-01' 
              GROUP BY utente"
    ;
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))

      
    $arr = Array(
          
    $row['utente'] => Array($row['importo'],123,255,200)
                );
    }

    $query "DROP view vendite_utenti";
    mysql_query($query$db);
     
    $gdg->pie_graph($arr); 
    Praticamente quando sono nel while e vado ad eseguire l'istruzione $arr = ..., credo che mi sovrascrive le informazioni che prendo dalla query, perchè quando poi vado a stampare il grafico, ottengo solo l'ultimo utente (praticamente la torta non viene suddivisa ma assegnata tutta all'ultimo utente presente nel DB).
    Ho provato a vedere gli array nelle guide, ma sinceramente non sono riuscito a trovare qlc che facesse al mio caso...
    Cosa sbaglio??

    Ancora grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    naturale devi fare
    Codice PHP:

      $arr
    [$row['utente'] ] =  Array($row['importo'],123,255,200); 
    Andrea

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    Grazie mille, mi sei stato veramente di aiuto
    Se dovessi avere qualche altro problema, sono sicuro che qui troverò la risposta!

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    Rieccomi quà a combattere con i grafici dopo averli messi per un pò in soffitta
    Ho realizzato il mio piccolo grafico, solo che quando vado a caricare la pagina , mi da questo errore:

    Warning: Cannot modify header information - headers already sent by (output started at C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\Database Tesi\grafica.php:10) in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\Database Tesi\gdgraph.php on line 946

    Ho capito che il problema è dato dalla chiamata alla funzione che si trova nel file grafica.php, infatti se tolgo la chiamata alla funzione il grafico viene visualizzato.
    Siccome sto utilizzando un file per la grafica che ovviamente richiamo in ogni pagina, come posso fare per far comparire il grafico sulla mia grafica? Vedere tutte le pagine con una grafica di sfondo e poi vedere il solo grafico su uno sfondo bianco, sinceramente non mi piace...
    Ho recuperato i file di esempio da questo sito e precisamente qui

    Allego il codiceche ho scritto per il mio grafico, magari il problema è lì...
    Codice PHP:
    session_start();
    include(
    "config.inc.php");
    include(
    "funzioni.php");
    //head();
    require_once("gdgraph.php");
    $gdg = new GDGraph(500,300,"Vendite");

    $arr = array();
    $arr_3D = Array();

    $query "create view vendite_utenti (id_fattura, utente, importo, data)
        AS
        SELECT F.id_fattura, O.user_agente, F.dare, F.data_emissione_fattura
        FROM fatture_vendita As F JOIN ordini_clienti AS O ON F.id_ordine=O.id_ordine
        WHERE F.data_emissione_fattura IS NOT NULL"
    ;
        
    mysql_query($query$db) or die(mysql_error());

    $spessore_grafico=1;
    $query "SELECT utente,SUM(importo) AS importo
              FROM vendite_utenti WHERE data>='2008-06-01' 
              AND data<'2008-09-01' 
              GROUP BY utente"
    ;
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))

      
    $r=rand(0,255);
      
    $g=rand(0,255);
      
    $b=rand(0,255);
      
    $arr[$row['utente'] ] =  Array($row['importo'],$r,$g,$b);
      
      
    $spessore_grafico+=3;
      
    $arr_3D[$row['utente'] ] =  $spessore_grafico;
    }


    $query "DROP view vendite_utenti";
    mysql_query($query$db);
     
    //$gdg->pie_graph($arr);
    $gdg->pie_graph($arr,90,true,200,true,$arr_3D); 
    Grazie a tutti quelli che mi aiuteranno a risolvere il problema.

  7. #7
    non sono sicuro di aver capito il problema ma se tu da una pagina "index.html" richiami la pagina grafico.php (quella che disegna il grafico e che restituisce una immagine) in questa maniera

    [img]./grafico.php[/img]

    non hai più problemi di sfondo bianco

    spero di aver centrato il problema



    Curiosità perchè inizializzi la sessione se poi non la usi??
    Perchè essere stupidi non è una menomazione ma un diritto di tutti!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    Originariamente inviato da sonounostrinato
    non sono sicuro di aver capito il problema ma se tu da una pagina "index.html" richiami la pagina grafico.php (quella che disegna il grafico e che restituisce una immagine) in questa maniera

    [img]./grafico.php[/img]

    non hai più problemi di sfondo bianco

    spero di aver centrato il problema



    Curiosità perchè inizializzi la sessione se poi non la usi??
    Spiego un pò meglio lo scopo del mio grafico...
    Ho una pagina php in cui, attraverso una select, seleziono il periodo di tempo che mi interessa per la statistica (ad esempio Gennaio-Marzo). Passo tale valore alla pagina che mi disegna il grafico e che poi me lo dovrebbe stampare. (La pagina sarebbe quella che ho postato, con qualche altra modifica...).
    Quello che dici tu, cioè [img]./grafico.php[/img] che fa di preciso? Mi carica l'immagine da un percorso? Il fatto è che con la classe che utilizzo per fare il grafico, mi pare che non mi salvo nessuna immagine...

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    un up per me...
    Qualcuno può aiutarmi?
    Grazie mille!!

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.