Au lieu de mettre à jour les décomptes par jour, semaine, etc., INSÉREZ simplement une ligne dans un tableau à chaque fois qu'une activité se produit comme ceci :
insert into activities (activity_date, activity_info)
values (CURRENT_TIMESTAMP, 'whatever');
Maintenant, vos rapports sont très simples comme :
select count(*) from activities
where activity_date between '2008-01-01' and '2008-01-07';
ou
select YEARWEEK(`activity_date`) as theweek, count(*)
group by theweek