+ Rispondi alla Discussione
Risultati da 1 a 6 di 6

Calcolo variazione di percentuale

Ultimo Messaggio di Digital Daigor il:
  1. #1
    User
    Data Registrazione
    Sep 2007
    Messaggi
    31

    Calcolo variazione di percentuale

    Ciao a tutti!
    ho un problema abbastanza urgente..
    ho un sito dove registro le visite ad una determinata pagina, salvando ogni singola visita in timestamp per sapere anche l'ora.
    Dovrei calcolare la variazione percentuale tra giorno e giorno.
    sapete come si può fare?

    purtroppo la gestione delle visite, lo riconosco, non è granchè...
    poichè mi interessavano le visite nel dettaglio le ho salvate in timestamp, come già scritto, e questo rende difficile (almeno x me ) effettuare delle statistiche.

    è fatto tutto in una pagina che mostra le visite nel dettaglio

    Codice PHP:
    $query="SELECT * FROM stat_corso_formazione WHERE regione='altro' GROUP BY data ORDER BY data DESC;"
    il group by è necessario x non visualizzare i doppi click che creano copie identiche di dati di passaggio..

    poi semplicemente visualizza le singole visite

    Codice PHP:
    <? while ($row=mysql_fetch_array($result)) {
    crea un array per tenere conto delle visite giorno per giorno, senza fare query troppo complicate..

    Codice PHP:
    if ($date[$data_giorno]=="0") {
      
    $date[$data_giorno]=1;
    }

    if (
    $data_giorno==$data_prec) {
      
    $date[$data_giorno]++;

    e vengono visualizzate giorno per giorno

    Codice PHP:
    foreach ($date as $giorno => $num_visite) {
        
    settype($num_visite,"integer");
        
    $num_visite++;
        echo 
    "Giorno ".$giorno.": ".$num_visite." visite<br />";

    il problema è che non riesco a gestire il numero delle visite per giorno per calcolare le variazioni in percentuale!
    la mia idea era di scrivere a fianco del numero di visite la variazione percentuale rispetto al giorno precedente...

    avete qualche idea sul da farsi o qualche guida da suggerirmi? ho già cercato un po' in internet ma non ho trovato niente...

    aiutooooo!

    grazie ciao ciao

  2. #2
    User
    Data Registrazione
    Feb 2007
    Località
    Paracurú, Fortaleza, Brasile
    Messaggi
    703
    Prova con questo!

    Codice:
    <?php
    
    /*da DB*/
    $query = "SELECT * FROM tb_gestione_visite ORDER BY data";
    
    $query = mysql_query($query);
    
    $i=0;
    while($q = mysql_fetch_array($query))
    {
        //metto in  array num di visite per ogni giorno    
        $entrate_array[date("d-n-Y",$q['entrata_t'])] += 1;
    }
    //////////////////
    
    
    /*solo x esempio*/
    
    $ent[] = mktime(0,0,0,1,1,2007);
    $ent[] = mktime(7,0,0,1,1,2007);
    $ent[] = mktime(7,35,0,1,1,2007);
    $ent[] = mktime(15,0,0,1,1,2007);
    $ent[] = mktime(0,0,0,1,2,2007);
    $ent[] = mktime(7,0,0,1,2,2007);
    $ent[] = mktime(7,35,0,1,3,2007);
    $ent[] = mktime(15,0,0,1,3,2007);
    $ent[] = mktime(0,0,0,1,3,2007);
    $ent[] = mktime(7,0,0,1,3,2007);
    $ent[] = mktime(7,35,0,1,3,2007);
    $ent[] = mktime(15,0,0,1,4,2007);
    $ent[] = mktime(7,0,0,1,5,2007);
    $ent[] = mktime(7,35,0,1,5,2007);
    $ent[] = mktime(15,0,0,1,5,2007);
    $ent[] = mktime(0,0,0,1,5,2007);
    $ent[] = mktime(7,0,0,1,5,2007);
    $ent[] = mktime(7,35,0,1,5,2007);
    $ent[] = mktime(15,0,0,1,5,2007);
    
    for($i=0;$i<count($ent);$i++)
    {
        $entrate_array[date("d-n-Y",$ent[$i])] += 1;
    }
    //////////////////
    
    //per ogni giorno prendo visite e data
    foreach($entrate_array as $data => $entrate_d)
    {
        $giorni[] = $data;
        $entrate[] = $entrate_d;
    }
    
    //partendo dal secondo giorno
    for($i=1;$i<count($giorni);$i++)
    {
        //resetto il valore
        $da_sotrarre = 0;
        //prendo il giorno prima e il giorno attuale
        $dato_g_m_1 = $entrate[$i-1];
        $dato_g_p_1 = $entrate[$i];
        
        //calcolo la differenza
        $differenza = $dato_g_m_1-$dato_g_p_1;
        
        if($differenza<0)
        {
            
            $segno = "";
            //setto il valore che verrà sottratto dalla %
            $da_sotrarre = 100;
        }
        else if($differenza>0)
        {
            $segno = "+";
        }
        else
        {
            $segno = "=";
        }
        
        //calcolo la percentuale della differenza
        $percentuale_differenza = (($differenza*100)/$dato_g_m_1)+$da_sotrarre;
        
        //se non sono uguali, metto il segno e il valore
        if($segno != "=")
        {
            $differenza_percentuale_calc[] = $segno.$percentuale_differenza;
        }
        else
        {
            $differenza_percentuale_calc[] = "";
        }
    }
    
    //scrivo il 1° giorno
    echo $giorni[0]." = ".$entrate[0]."<br><br>";
    
    //scrivo la secuenza dei gg
    for($i=1;$i<count($giorni)-1;$i++)
    {
        echo $giorni[$i]." = ".$entrate[$i]." -> ".$differenza_percentuale_calc[$i]."%<br><br>";
    }
    ?>

  3. #3
    User
    Data Registrazione
    Sep 2007
    Messaggi
    31
    risposto in pm grazie ciao ciao

  4. #4
    Moderatore L'avatar di massimux
    Data Registrazione
    Apr 2006
    Località
    Napoli
    Messaggi
    798
    Segui massimux su Twitter Aggiungi massimux su Google+ Aggiungi massimux su Linkedin
    è "consigliabile" scrivere sul forum anche per far capire a chi questa risposta potrebbe essere utile :P

    Ciao
    MODPHP-MySQLPerchè non ti fermi?
    Da bravo Moderatore, Modero con Moderazione il Moderabile

  5. #5
    User
    Data Registrazione
    Sep 2007
    Messaggi
    31
    la risposta che ho dato a daigor non centra con la soluzione, tutto quello che serve l'ha già postato lui... tranquillo...

  6. #6
    User
    Data Registrazione
    Feb 2007
    Località
    Paracurú, Fortaleza, Brasile
    Messaggi
    703
    cmq, credo che funzioni, con i valori che ci sono va, a meno che abbia cannato, cmq se da 5 si passa a 1 visita, si ha "-500%", credo che sia giusto con il mio ragionamento, magari voi trovate qualche di meglio, se avete da add o togliere, ditelo anche a me, visto che ho intezione di usarla!!!!

    BYE!!!!!

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.