Classement par semaine

Répondre
PotDeYaourt
le 25/03/2004 à 22:05
PotDeYaourt
Bonjour à tous et bravo au webmestre, ce site est une mine d'information :)

Alors voilà, je viens car je rencontre un léger problème qui je suis sûr est en fait tout con seulement je n'ai pas les capacités pour le résoudre :(

Mon site affiche des articles et j'aimerai afficher le plus lu de la semaine !
E,n fait j'ai réussi à afficher le plus lu par mois, par jour ou par année avec ce genre de requète:
Ps: la date est enregistré sous cette forme: 2004-03-11 ... et l'heure mais ce n'est pas important smiley )

<?php 
$temps = date("Y-m");
SELECT * from news WHERE date LIKE '".$temps."%' ORDER by hits DESC limit 0,1
?>

Hits: les lectures
date: le champs contenant la date

Je pense qu'on peut faire autrement mais j'ai choisi la m"thode qui m'a semblée la plus simple et avec laquelle j'était sûr de réussir ^^

Tout marche seulement c'est par mois et moi je coudrais par semaine mais ça se complique énormément smiley

Pourriez-vous me mettre sur la voie ?
Merchi et bonne soirée smiley
LA GLOBULE
le 25/03/2004 à 23:03
LA GLOBULE
Cette page devrait t'aider.

Le but du jeu.
1) Calculer le numero de la semaine courante (à l'aide la fonction WEEK de mysql)
2) faire ta requete sql en calculant le numero de semaine de chaque article et en le comparant au numero de la semaine courante

PS : si tu souhaites plus de precision, dis le moi, je peux me pencher plus sur le probleme smiley (moi aussi ca m'interesse ce truc ^^)
PotDeYaourt
le 25/03/2004 à 23:08
PotDeYaourt
Ben écoute je vais aller voir de quoi il retourne mais je t'invite à faire de même car tu sauras certainement mieux te débrouiller que moi smiley

Merci en tout cas de t'y intéresser :)
zebden
le 26/03/2004 à 01:41
zebden
POur decomposer au mieux une date , la mettre au format time(); (temps ecoulé en seconde depuis le 1er janvier 1970).
Pas de decomposition inutile tu prends ce qu'il y a a prendre, Pour la semaine mais faut vouloir du pile.

$semaine = 60*60*24*7;
$date_tout_de_suite = time();
$date_la_semaine_derniere = $date_tout_de_suite - $semaine;

/// la requete SQL
$sql = 'SELECT truc FROM `machin` WHERE `champs_date` > '.$date_la_semaine_derniere.' ORDER BY hits';

Ensuite tu peux varier , si tu veux juste la semaine en cours par exemple celle-ci soit lundi 20 au dimanche 26 , il suffira de remplacer dans la var semaine 7 par le numero du jour de la semaine.
lundi = 1 , mardi = 2 ... ect ect

exemple:
Cette semaine Vendredi 26 depuis lundi
1 => article truc 54 hits

Alors evidement c'est un peu brouillon , et comme la dis globule on peut passer par Mysql plutot que de s'embeter a calculer cmme je viens de le faire et surtout surement plus pratique.
zebdinou pour les intimes / Blog : http://www.zebden.fr
PotDeYaourt
le 26/03/2004 à 13:01
PotDeYaourt
zebden, merci c'est gentil mais je en fait les dates de mes news sont enregistrées sous le format cité plus haut et je ne vais pas m'amuser à les refaire une par une et retrouver le timestamp de chacune smiley

LA GLOBULE, ta page à l'air intéressante car ils utilisent exactement la système de date que moi seulement je n'y comprends pas réellement grand chose et si tu pouvais m'aider, ce serait vraiment super ! :)
PotDeYaourt
le 27/03/2004 à 01:16
PotDeYaourt
Re salut,
Bon alors vu comment j'y comprends pas grand chose, j'ai fait à ma sauce, c'est pas tout à fait ca mais ça s'y rapproche :)

J'ai fait la news la plus lue dans les 7 derniers jours avec la fonction mktime !

$tempsok = date("Y-m", mktime(date("H"), date("i"), date("s"), date("m"), date("d") - 7, date("Y")));

Bon week-end :)
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours