NoShade.net est en vente — Contactez nous si vous êtes intéressé
Le siteTutoriauxInterviews
icone RSS NoShade.net

Accueil » Tutoriaux » PHP » Chapitre 4.6 : Statistiques

Les tutoriaux Php

4.6 Statistiques


Compter le nombre de bouquins



Nous allons maintenant voir quelque chose d'un peu moins important, mois utile à première vue, nous allons en effet effectuer quelques calculs pour créer une page de statistiques de nos livres.

Dans un premier temps, nous allons donc calculer :
- Le nombre total de bouquins
- Le nombre de BD
- Le nombre de livres de formations
- Le nombre de mangas
- Le nombre de romans

La fonction à utiliser pour compter le nombre d'entrées dans une table est mysql_num_rows(). Celle-ci s'applique donc à une fonction mysql_query() contenant une requête MySQL.

Commençons par créer une nouvelle page "statistiques.php", puis par créer un lien vers cette page sur la page "index.php", afin d'y accéder plus simplement.

Dans cette page, après avoir pris soin de faire une include du fichier de connexion, et de refermer la connexion à MySQL en bas de page, nous allons créer une variable "$nombre_total_bouquins", avec comme valeur, le nombre de bouquins comptés par MySQL.

<?php include('connexion.inc.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Mes bouquins - Statistiques</title>
    </head>
    <body>
<h1>Statistiques</h1>
<br />
<?php
    
// Nombre total de bouquins
    
$nombre_total_bouquins mysql_num_rows(mysql_query('SELECT * FROM bouquins'));

    
// Ecriture des resultats
    
echo $nombre_total_bouquins ' bouquins enregistr&eacute;s';
?>
    </body>
</html>
<?php mysql_close?>


C'est donc, vous le voyez, très simple, ça tient en une ligne, on fait par la suite un echo de la variable "$nombre_total_bouquins" afin de vérifier le bon fonctionnement du script, et tout simplement, de commencer à afficher les résultats. :)

Alors, pour calculer le nombre de BD, de mangas, ... Une idée peut-être?

Là encore, rien de très compliqué, ce n'est qu'une requête MySQL, nous n'aurons plus qu'à préciser WHERE genre="BD" par exemple! ;)

Nous allons donc de la même manière, créer les variables pour les 4 genres de livres dont nous disposons, puis écrire tous les résultats.

<?php
    
//====================
    // Calculs
    //====================

    
$nombre_total_bouquins = mysql_num_rows(mysql_query('SELECT * FROM bouquins'));
    
$nombre_bd = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="BD"'));
    
$nombre_formation = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="Formation"'));
    
$nombre_mangas = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="Mangas"'));
    
$nombre_romans = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="Roman"'));

    
//=======================
    // Ecriture des resultats
    //=======================

    
echo $nombre_total_bouquins ' bouquins enregistr&eacute;s<br />';
    echo 
$nombre_bd ' BD enregistr&eacute;es<br />';
    echo 
$nombre_formation ' Livres de formation enregistr&eacute;s<br />';
    echo 
$nombre_mangas ' Mangas enregistr&eacute;s<br />';
    echo 
$nombre_romans ' Romans enregistr&eacute;s';
?>


J'en ai profité, vous l'avez vu, pour disposer autrement le code, ce n'est là qu'une affaire de présentation, personnellement je m'y retrouve mieux comme cela, en créant un gros bloc "Calculs" en commentaires, puis en nommant proprement mes variables, plutôt qu'en créant un commentaire pour identifier chaque variables... Lorsque l'on code de très longes pages, si l'on peut raccourcir un peu celle-ci, tout en gardant un code bien commenté, c'est mieux! :)

Testez donc ce script chez vous, il doit vous afficher le nombre de livres que vous avez. Si vous êtes motivés à faire un peu de calcul mental, additionnez les résultats du nombre de BD, livres de formation, mangas et romans, celui-ci doit correspondre au nombre total de livres! :)

Vous êtes un peu flemmard, ou plutôt un jeune geek, qui à envie de vérifier cela directement en PHP? C'est possible! aussi!
Rappelez-vous du chapitre sur les calculs! :) Hé oui!
Écrivons donc :

echo 'V&eacute;rification : ' . ($nombre_bd + $nombre_formation + $nombre_mangas + $nombre_romans);


On a simplement additionné les variables que nous voulions!
Les quatre variables sont entourées de parenthèses obligatoirement dans ce cas où nous avons utilisé la concaténation pour faire précéder "Vérification : " avant d'écrire le résultat.

Si vous voulez faire plus "simple", ou du moins "autrement", on pourrait écrire cela sur deux lignes :

$verification = $nombre_bd + $nombre_formation + $nombre_mangas + $nombre_romans;
echo
'V&eacute;rification : ' . $verification;


A vous de voir, vous commencez à l'avoir compris je pense, il y a beaucoup de façons de faire la même chose en PHP! :)

Vérifiez le bon fonctionnement de cette vérification chez vous, puis, supprimez la, elle ne sera pas utile par la suite, autant ne pas encombrer notre code! ;)


Calculer des pourcentages par genres



Allez, je vous sens motivés, alors on continue dans nos calculs, sauf que là nous allons voir les statistiques, soit les pourcentages, donc à nous les multiplications et divisions! :D (Rah, qu'il était bon le temps du collège...)

Retournons ajouter un peu de code dans la partie "Calculs" de notre page. :)

Au cas où vous l'auriez oublié, pour calculer le pourcentage de BD que nous avons, par rapport au total de nos livres, nous ferons :
Nombre de BD x 100 ÷ Nombre total de bouquins


Ca ira? :)
Bon, c'est parti, tout d'un coup, on crée les variables qui calculent tous ces pourcentages, puis, on écris les résultats en bas.

<?php include('connexion.inc.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Mes bouquins - Statistiques</title>
    </head>
    <body>
<h1>Statistiques</h1>
<br />
<?php
    
//====================
    // Calculs
    //====================

    
$nombre_total_bouquins = mysql_num_rows(mysql_query('SELECT * FROM bouquins'));
    
$nombre_bd = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="BD"'));
    
$nombre_formation = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="Formation"'));
    
$nombre_mangas = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="Mangas"'));
    
$nombre_romans = mysql_num_rows(mysql_query('SELECT * FROM bouquins WHERE genre="Roman"'));
    
    
$pourcentage_bd = $nombre_bd * 100 / $nombre_total_bouquins;
    
$pourcentage_formation = $nombre_formation * 100 / $nombre_total_bouquins;
    
$pourcentage_mangas = $nombre_mangas * 100 / $nombre_total_bouquins;
    
$pourcentage_romans = $nombre_romans * 100 $nombre_total_bouquins;

    
//=======================
    // Ecriture des resultats
    //=======================

    
echo $nombre_total_bouquins . ' bouquins enregistr&eacute;s<br />';
    echo
$nombre_bd . ' BD enregistr&eacute;es<br />';
    echo
$nombre_formation . ' Livres de formation enregistr&eacute;s<br />';
    echo
$nombre_mangas . ' Mangas enregistr&eacute;s<br />';
    echo
$nombre_romans . ' Romans enregistr&eacute;s';

    echo 
'<hr />';

    echo 
'Pourcentage de BD : ' . $pourcentage_bd . '<br />';
    echo
'Pourcentage de livres de formation : ' . $pourcentage_formation . '<br />';
    echo
'Pourcentage de mangas : ' . $pourcentage_mangas . '<br />';
    echo
'Pourcentage de romans : ' . $pourcentage_romans . '<br />';
?>
    </body>
</html>
<?php mysql_close?>


Voila, prenez une minute ou deux pour lire tout ce code... puis testez le aussi chez vous.

Vous pouvez, là encore, faire une vérification des résultats obtenus, en additionnant les quatre variables de calculs de pourcentages, si vous ne tombez pas à un résultat de 100, c'est que vous vous êtes trompés quelque part! :D

Je crois que le but de ce chapitre est atteint, vous faire effectuer un peu de calculs, avec comme bases, des résultats obtenus à partir de notre base de données.

Dans une utilisation plus concrète, à quoi cela pourrait-il bien nous servir ?
A créer des sondages, par exemple...
A faire des moyennes de notes, sur un site de films par exemple, ou tout simplement comme sur le livre d'or de NoShade...
A créer un "Top 50" des meilleurs posteurs du forum que vous allez bientôt réussir à coder tout seul...

Bref, vous croiserez certainement un jour un besoin d'utiliser des calculs, même simples comme ceux-ci, dans un de vos projets développés en PHP. :)


Notes de fin du chapitre 4



Nous en avons maintenant fini avec le chapitre 4 sur les bases de données, il est maintenant grand temps d'aller explorer encore plus de possibilités qu'offrent PHP! Hé oui, on a vraiment pas encore tout vu! ;)

Je vous proposes tout-de même de mettre en pratique ce que vous avez appris jusqu'à maintenant avant d'attaquer la suite, non pas car celle-ci va devenir plus difficile, mais car il est important que vous pratiquiez tout cela pour bien le comprendre et le retenir.

Essayez par exemple de créer un système de gestion de news tout seul? :)
Je vais vous aider un peu pour vous donner les grandes lignes de "comment créer un système de news" ;)

Nous avons tout d'abord besoin, côté base de données, d'une table! Retournez donc sur PHPmyAdmin! :)
Celle-ci pourrait par exemple se composer des champs suivants :
- id : obligatoirement, car c'est vraiment trop pratique! Ce champ sera donc au format INT, limité à une taille de 11 caractères, s'auto-incrementera et sera la clef primaire de notre table,
- titre : sera de type VARCHAR, limité à 250 caractères, et contiendra le titre de notre actualité,
- contenu : sera de type "TEXT", tout simplement, et contiendra le texte de notre actualité,
- auteur : vous n'êtes pas obligé de créer ce champ, mais si l'envie vous en dit, alors ce champ sera de type VARCHAR, limité à 250 caractères,
- date : un peu plus utile que le champ "auteur", la date vous fera revoir les formats de dates et heures, il est peut donc être judicieux de le prévoir... si si, allez, on se motive et on crée ce champ aussi! :D
Il sera donc de type INT limité à 11 caractères.

Pour la suite, le principe sera vraiment le même que pour nos bouquins, si ce n'est que :
- vous présenterez différemment vos actualités que votre liste de bouquins... ça va de soi...
- vous éviterez de laisser l'accès aux liens "Modifier et Supprimer" pour vos visiteurs, cachez-les dans une page protégée (nous avons appris cela précédemment, hihi)
- le formulaire d'ajout/modification de news sera différent, il n'aura que les champs dont vous avez besoin ...

Grosso-modo, voilà ce qui vous attends. :)

Motivez vous à essayer de coder ça, quitte à reprendre des portions de code dans le début de ce cours, notamment pour les requêtes MySQL, qui sont dures à retenir au début, je vous l'accorde...

Bon courage à vous, il en faut un peu, PHP a beau être un langage de programmation facile, il n'est quand même pas à la portée de tous, vous l'aurez largement compris si vous nous avez lus jusque là déjà.

Une fois que vous aurez fait tout cela, je vous invite à passer à la suite! ;)

A bientôt! :)

Par : Legibe, le 30 septembre 2006

Sommaire du cours PHP

» Sommaire
» 1.1 Avant propos
» 1.2 Que faut'il pour faire du php?
» 2.1 Écrire du texte en PHP
» 2.2 Les commentaires, les variables et les calculs
» 2.3 Les conditions
» 2.4 La concaténation + Évaluation
» 3.1 Transmission de données
» 3.2 Les fonctions + Dates et heures
» 3.3 Les Arrays (tableaux) + les boucles
» 4.1 Les bases de données
» 4.2 Lecture dans une BDD
» 4.3 Enregistrer dans une BDD
» 4.4 Modifier le contenu d'une table
» 4.5 Supprimer du contenu dans une BDD
» 4.6 Statistiques
» 5.1 Les sessions et cookies
» 5.2 Exercice : Un système de login multi-membres