• User

    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 :x) effettuare delle statistiche.

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

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

    poi semplicemente visualizza le singole visite

    [php]<? while ($row=mysql_fetch_array($result)) { [/php]crea un array per tenere conto delle visite giorno per giorno, senza fare query troppo complicate..

    [php]
    if ($date[$data_giorno]=="0") {
    $date[$data_giorno]=1;
    }

    if ($data_giorno==$data_prec) {
    $date[$data_giorno]++;
    }
    [/php]e vengono visualizzate giorno per giorno

    [php]foreach ($date as $giorno => $num_visite) {
    settype($num_visite,"integer");
    $num_visite++;
    echo "Giorno ".$giorno.": ".$num_visite." visite<br />";
    }
    [/php]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 :yuppi:


  • User Attivo

    Prova con questo!

    
    <?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](http://www.giorgiotave.it/forum/../wikigt/os/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*)] += 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*;
        
        //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*." = ".$entrate*." -> ".$differenza_percentuale_calc*."%<br><br>";
    }
    ?>
    
    

  • User

    risposto in pm grazie ciao ciao 😄


  • Moderatore

    è "consigliabile" scrivere sul forum 😄 anche per far capire a chi questa risposta potrebbe essere utile 😛

    Ciao


  • User

    la risposta che ho dato a daigor non centra con la soluzione, tutto quello che serve l'ha già postato lui... tranquillo...


  • User Attivo

    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!!!!!