• User

    Media aritmetica da array in while

    Salve a tutti,

    Ho una situazione di questo tipo :

    [php]

    <?php

    $refer=mysql_query(" SELECT username, hits FROM users WHERE refer='$name'");

    ?>

    <table width="200" border="0">

    <?php while ($var_hits = mysql_fetch_array($refer, MYSQL_NUM)) { ?>

    <tr>
    <td><?php printf ($var_hits[0])?></td>
    <td><?php printf ($var_hits[1])?></td>
    </tr>

    <?php } ?>

    </table>

    [/php]

    In pratica ho bisogno di visualizzare una lista di utenti che hanno come "refer" un nome in particolare e visualizzarne username e numero di hits.

    E fin qui questo codice funziona.

    Adesso avrei bisogno di effettuare la media aritmetica dei valori delle hits ( questa variabile : $var_hits[1] ).

    Come posso fare ??
    Spero che qualcuno riesca ad aiutarmi :smile5:


  • User Attivo

    Ma hits sono numeri?

    La media si fa sommando tutti i numeri e dividere per quanti sono...

    :gthi:


  • User

    Si le hits sono tutti numeri.

    Lo so che si sommano e poi dividono ma non so come andarlo a fare in php in quel caso... :mmm:

    Ho provato con qualcosa del tipo :

    SELECT AVG(hits) FROM users WHERE refer='$name'

    Ma non va... :arrabbiato:

    Soluzioni ?


  • User

    Prova a fare un'altra query da lanciare subito dopo quella che hai già fatto in questo modo :

    " SELECT SUM(IF(refer = '$name', 1, 0)) FROM users "

    Dovresti ottenere il numero totale dei refer in modo da poterlo utilizzare per fare la media con il numero di hits che hai già ricavato.


  • User Attivo

    [php]<?php

    $refer=mysql_query(" SELECT username, hits FROM users WHERE refer='$name'");
    $n_m = 0;
    $numero_hits = 0;
    ?>

    <table width="200" border="0">

    <?php while($var_hits = mysql_fetch_assoc($refer)) { ?>

    <tr>
    <td><?=$var_hits['username']?></td>
    <td><?=$var_hits['hits']?></td>
    </tr>

    <?php
    $n_m++;
    $numero_hits = $numero_hits+$var_hits['hits'];
    }

    // E qui calcoliamo la media
    $media = $numero_hits/$n_m;

    echo $media; // E qui fai vedere la media
    ?>
    </table> [/php]


  • ModSenior

    O più semplicemente

    [php]
    <?php

    $refer=mysql_query(" SELECT username, hits FROM users WHERE refer='$name'");
    $numero_hits = 0;
    ?>

    <table width="200" border="0">

    <?php while($var_hits = mysql_fetch_assoc($refer)) { ?>

    <tr>
    <td><?=$var_hits['username']?></td>
    <td><?=$var_hits['hits']?></td>
    </tr>

    <?php
    $numero_hits+= $var_hits['hits'];
    }

    // E qui calcoliamo la media
    $media = $numero_hits/mysql_num_rows($refer);

    echo $media; // E qui fai vedere la media
    ?>
    </table>
    [/php]


  • User Attivo

    Si infatti è più semplice e fa la stessa cosa 😉

    :gthi: