Les données que vous suivez actuellement ne va pas vous permettre de sélectionner le sommet vu dans la dernière semaine. Il vous montrera le haut consulté sur tous les temps, ou les articles les plus regardés créés au cours de la dernière semaine. Si quelque chose a été créé il y a deux semaines, mais a été vu plus que tout au cours de la dernière semaine, vous ne pouvez pas le déterminer à partir des données que vous suivez. Une façon que je peux voir pour le faire serait de suivre le nombre de hits que chaque élément de contenu reçoit chaque jour de la semaine.
create table daily_hits {
cid integer, -- content id points to the table you already have
dotw smallint, -- 0-6 or similar
hits integer
PRIMARY KEY (cid, dotw)
}
Chaque fois que vous augmentez le nombre de succès sur l'élément de contenu, vous actualiserait également la table daily_hits pour l'ID de contenu et jour de la semaine donnée. Vous auriez besoin d'une fonction qui convertit la date/heure actuelle en un jour de la semaine. MySql fournit DAYOFWEEK à cette fin.
Pour obtenir les plus vues de la semaine dernière, vous pouvez interroger comme ceci:
SELECT cid, SUM (hits) DE daily_hits GROUPE PAR ORDRE cid PAR SOMME (hits) DESC
Vous aurez besoin un type de travail planifié qui supprime le jour de la semaine en cours à minuit, de sorte que vous n'accumulez pas pour toujours et que vous effectuez essentiellement la même accumulation sur la colonne des hits de la table en cours.
Quelle est la valeur d'il y a 7 jours? –
@Ben Shelock, (maintenant la valeur) - (7 * 24 * 60 * 60). En php il serait temps() - (7 * 24 * 60 * 60) – Nathan
Vous devez calculer cela. Grâce à PHP, vous pouvez utiliser time() - 604800. –