Tom's Guide > Forum > Programmation > PHP || Calcule.
Mot :    Pseudo :           
 

Bonjour, j'aurais besoin d'un peux d'aide pour un petit cacule PHP :P

Je vous explique :
J'ai créé une table pour des stats par jour : stats_visites_jour
Avec 3 champs : cle(id), jour,nombre.
Enfaite pour le principe de incrémenter la table chaque nouvel page vue pas de problêmes!
Ensuite je fais un while pour afficher le top 5 des pages vues (ORDER BY nombre DESC LIMIT 0.5)
ET la j'ai mes 5 pages les plus vues qui s'affiche.
Maintenant il faut c'est faire un graphique.
De se coté je met simplement dans le while :
<img src=\"stats.jpeg\" height=\"10px\" width=\"".$top_stats3['nombre']."px\">

Et la sa se complique !Car si j'ai une page vue plus de 10 000 sa va me metre une img de 10 000px :/ et moi je voudrais enfaite (pour le calcul) que le premier soit de 160px, et que enfaite les 4 suivants soiient proportionels ! c'est simple mais pas si facil si on y réfléchi !

Merci de votre futur aide !

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Il faut savoir faire une règle de 3 ...

soit v la valeur retournée dans le premier résultat sql (le plus grand des 5)
soit w la valeur retournée dans un des résultats suivants (un des 4 autres, moins grands)
soit x la largeur cherchée

v -> 160
w -> x

x = w * 160 / v

Répondre à chrisz

oki mais comment faire une regle de 3?

Et je vois pas comment faire lol mais vraiment pas du tout.

Répondre à DanielCosta@IDN

Salut,

tu cherches la plus grande des 5 valeurs(Vmax).
tu en déduis un coeff. de mise à l'échelle :
coef=160/VMax
et tu appliques ton coef à chaque valeur :
Vwidth=$top_stats3['nombre']*coef

Ainsi Vwidth sera toujours compris entre 0 et 160.

[edit]arg grillé :-D

Répondre à ataofeal

Tu sais lire ?
Un étudiant qui ne sais pas faire une règle de 3 ...

Répondre à chrisz

Oki merci de votre aide ....

je vais essayé j'appelle la valeur la plus grande et je fais le calcul.

Répondre à DanielCosta@IDN

JE comprend tjs pas comment faire :( lol
c'est le principe qui me pose probleme ! et le calcule .

Répondre à DanielCosta@IDN

<img src=\"stats.jpeg\" height=\"10px\" width=\"".$top_stats3['nombre']*160/$top_stats3[0]."px\">

Répondre à ataofeal

mais sa représente quoi le [0] ?

Répondre à DanielCosta@IDN

j'ai fais la supposition que $top_stats3 contenait le résultat de ta requête triée.
Donc sauf erreur de ma part, le premier élément correspond à celui qui est le plus grand.

Répondre à ataofeal

je me retrouve avec une image de :19920px

Répondre à DanielCosta@IDN

Ben c'est que j'ai fait une erreur.
Que mets tu dans $top_stats3?

Répondre à ataofeal

Citation :


DanielCosta a écrit :
mais sa représente quoi le [0] ?





C'est un array (ou tableau)

Répondre à SiM07

Code :
  1. $top_stats = "SELECT *  FROM stats_visites_jour ORDER BY nombre DESC LIMIT 0,5";
  2.     $top_stats2 = mysql_query($top_stats) or die('Erreur SQL !'.$top_stats.'<br>'.mysql_error());
  3.             echo "Derniers 5 jours :</br>";
  4.         while($top_stats3 = mysql_fetch_array($top_stats2)) {
  5.             echo $top_stats3['jour']."<img src=\"stats.jpeg\" width=\"".$top_stats3['nombre']*100/$top_stats3['0']."%\" height=\"10px\">
  6. ";
  7.         }



edit : merci sim07
edit2: Enfaite il faudrais fair :

Code :
  1. $top_stats3['nombre'] * 100 / LE PLUS GRAND


Maintenant reste à savoir comment avoir le plus grand avec $top_stats3 ??
PS:j'ais mis en % pour faciliter.

Répondre à DanielCosta@IDN

je te conseille de faire en pourcentages. Tu prend le nombre total de visite, apres tu récupère le nombre de visites de la page la plus visitée. Tu le divise par le nombre total de visites et tu fais *100.

apres tu recommence pour la deuxieme.

($nb_visites_page/$nb_visites_total)*100

Répondre à mousk@IDN

alors effectivement ma supposition était mauvaise ;-)

un truc pas propre :

Code :
  1. $top_stats = "SELECT *  FROM stats_visites_jour ORDER BY nombre DESC LIMIT 0,5";
  2.     $top_stats2 = mysql_query($top_stats) or die('Erreur SQL !'.$top_stats.'<br>'.mysql_error());   
  3. echo "Derniers 5 jours :</br>";   
  4. $num=0;
  5. $max=0;
  6. while($top_stats3 = mysql_fetch_array($top_stats2)) {
  7.   if($num==0)
  8.       $max=$top_stats3['nombre'];
  9.   $num++;
  10.   echo $top_stats3['jour']."<img src=\"stats.jpeg\" width=\"".$top_stats3['nombre']*100/$max."%\" height=\"10px\">
  11. ";
  12. }

Répondre à ataofeal

Mouè mais là ça le fait pour calculer un jour ou tout les jours! moi je veux juste c'est les 5 derniers jours et que le plus haut occupe 100%

edit aprés poste de SIM07 : oki merci

Répondre à DanielCosta@IDN

RE: à tous... enfaite jke vien de me rendre compte que là sa affiche :
le top 5...

Mais que à la base c'est les stats des 5 derniers jours que je veux! :P désolé de m'etre trompé

Alors la sa se complique je pense. car il faut que le plus gros score des 5 derniers jours soit de 160 px et les autres soit par rapport a celui la(= équivalent)

Code :
  1. $top_stats = "SELECT jour,nombre  FROM stats_visites_jour ORDER BY jour DESC LIMIT 0,5";
  2.     $top_stats2 = mysql_query($top_stats) or die('Erreur SQL !'.$top_stats.'<br>'.mysql_error());   
  3.         echo "Derniers 5 jours :</br>";   
  4.         $num=0;
  5.         $max=0;
  6.     while($top_stats3 = mysql_fetch_array($top_stats2)) {
  7.         if($num==0)
  8.         $max=$top_stats3['nombre']."
  9. ";
  10.         $num++."
  11. ";
  12.         echo $top_stats3['jour']."<img src=\"stats.jpeg\" width=\"".$top_stats3['nombre']*160/$max."px\" height=\"10px\">
  13. ";
  14.     }

Répondre à DanielCosta@IDN

c'est tout simple, lors de ton "select ....." (quand tu récupère les visites des jours), tu enlève le "desc" et c'est bon :)
voilà @+

Répondre à mousk@IDN

Oui mais la moi je veux c'est que le plus grand ait 160px
et les autres ait la taille parraport a celui la!

Répondre à DanielCosta@IDN

Enfaite j'ai fais comme ça finalement

$nbr * 160 / nbr_plus_grand

et le nombre le plus grand je l'ai eu grâce à un while!

Merci à tous

Répondre à DanielCosta@IDN

au passage pense quand même que nbr_plus_grand peut valoir 0. ;-)

Répondre à ataofeal

non c'est impossible!

Car c'est des pages vues sur tout les site est logiquement pour voir la page des stats y en a aumoin une que tu as vu(celle des stats! )
:-P

Répondre à DanielCosta@IDN
Tom's Guide > Forum > Programmation > PHP || Calcule.
Aller à :

Il y a 2564 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens