Les dates sont l’un des éléments les plus compliqué à utiliser sous PHP et MySQL. Il est parfois nécessaire de faire des opérations dessus. C’était mon cas lors de la mise en place de la popularité sur Webdesign-tutoriaux et je vais vous expliquer dans ce tutoriel comment j’ai procédé…
J’ai défini la popularité d’un tutoriel sur Webdesign-tutoriaux comme étant le nombre de hits moyen par jour depuis que le tutoriel a été ajouté sur le site. Mon problème était donc de calculer la différence entre la date courante “aujourd’hui” et la date d’ajout du tutoriel.
Il existe 2 solutions à ce problème : la première est de calculer la différence de date en php (des scripts de fonction existent) et la seconde de faire le calcul sous MySQL. J’ai choisit de le faire sous MySQL afin de pouvoir trier les résultat de ma requête par popularité et parce que MySQL fait des calcules sur les dates de façon automatique.
j’ai donc une table MySQL tutoriel (simplifié) qui contient les champs id_tuto (int), titre (varchar), hits(int) et date_ajout (timestamp).
Sous MySQL la fonction CURDATE() retourne la date courante et la fonction DATEDIFF(date1 , date2) permet d’avoir le nombre de jour écoulé entre 2 dates.
Le code PHP et la requête que j’ai utilisée pour avoir les 10 tutoriaux les plus populaires est :
ORDER BY (hits/(DATEDIFF(CURDATE(), date_ajout)+1)) DESC LIMIT 0,10";
$resultat = mysql_query($requete) OR die("Erreur SQL : ".$requete);
while ($ligne= mysql_fetch_array($resultat)){...};
Ainsi dans la variable $ligne[’delai’] je vais récuppérer le nombre de jour depuis que le tutoriel a été ajouté : DATEDIFF(CURDATE(), date_ajout) et les tutoriaux seront classés par ordre décroissant en fonction du nombre moyen de hits par jour : ORDER BY (hits/(DATEDIFF(CURDATE(), date_ajout)+1)) DESC
Voilà …
il existe aussi les fonction DATE_ADD(…, …) et DATE_SUB(…, …) qui permettent des faire des calculs arithmétiques sur les dates. En espérant que ce mini tutoriel sur les dates en MySQL vous auras aidé.
May 4th, 2007 at 21:24
Salut monsieur le webmaster j’ai une base de donnée gestion de stock je suis incapable de faire des calculs exemple si on vous donne le prix unitaire et la quantité vendus d’un produit on obtient le montant vendu ,mon probleme c’est comment obtenir le montant vendu.merci .ibrahima.
May 16th, 2007 at 16:13
vous n’êtes pas obligé de faire tous les calculs dans la requête sql c’est aussi possible de le faire en PHP après avoir récupérer les données. Sinon il existe aussi la fonction count() et sum() dans MySQL