Gérer des fins d'abonnement

WRInaute passionné
Bonjour,

Voilà j'ai des gens qui s'abonnent sur mon site. Certains pour 6 mois d'autres pour 1 an ou 24 mois.

Je dois créer une page où s'affiche la liste des abonnés et la date de la fin de leur inscription. Et je souhaite que ceux dont l'abonnement s'arrête en premier soient affichés en haut du tableau.

Imaginons que demain 02/01/09, un gars s'inscrit pour 6 mois.
Son abonnement est donc valable jusqu'au 02/06/09.
Un autre gars s'inscrit le 03/01/09 pour 6 mois.
Son abonnement est donc valable jusqu'au 03/06/09.

Comment fais-je pour les classer ?
Comment fais-je pour attribuer une date de fin ? Je peux l'inscrire manuellement :"02" pour le champ jour, "01" pour le champ mois et "09" pour le champ année.
Mais pour faire un classement avec ça, ça va pas être commode.

Donc je me dis qu'il faudrait que je transforme la date d'abonnement en time() puis que j'y ajoute l'équivalent time() de la durée d'abonnement. Ensuite je fais un simple classement selon le time() de fin d'abonnement.

Bon, mais comment faire pour obtenir les time() pour 6 mois, 1 an et 24 mois ?

Et avez vous une meilleure solution que celle que je viens d'exposer ?


Merci d'avance.
 
WRInaute passionné
Hello,

le plus simple à mon avis est de laisser faire MySQL : tu utilises un champ de type DATE (ou DATETIME au choix) et basta.

Ensuite lors de l'insertion de ta date de fin :
Code:
dateDebut + INTERVAL 6 MONTH

Tu pourras faire tous les ORDER BY que tu veux là dessus.
 
WRInaute passionné
oui pourquoi pas mais c'est un traitement très simple aussi en php

sinon hs mais bool qu'est qu'il a ton www ??? il est tout blanc ! c'est la neige ?
 
WRInaute passionné
Dès lors qu'on a besoin de faire des recherches ou du tri sur la date, perso il me semble infiniment plus simple de laisser complètement faire MySQL ; non ?

Pour mon "www" il est comme ça depuis loooongtemps, et ça lui va bien je trouve ;)
 
WRInaute passionné
Il n'a jamais vraiment existé... au début il y avait bien un commentaire expliquant le pourquoi du comment, mais c'est tout. Mais... pourquoi donc ? :S
 
WRInaute passionné
En fait cela confirme que seul les liens comptent pour le PR, plusieurs personnes (dont moi) pensaient que le comportement des visiteurs, le contenu, influaient , mais ca n'est donc pas le cas.
Merci de me donner d'autres indication si tu en as ;)
 
WRInaute passionné
Tu serais pas le gars qui a gagné au loto et qui n'est pas allé chercher son cheque par hasard :lol: ?
 
WRInaute passionné
Bool a dit:
Hello,

le plus simple à mon avis est de laisser faire MySQL : tu utilises un champ de type DATE (ou DATETIME au choix) et basta.

Ensuite lors de l'insertion de ta date de fin :
Code:
dateDebut + INTERVAL 6 MONTH

Tu pourras faire tous les ORDER BY que tu veux là dessus.

ça a l'air bien ça.

Dans la BD, j'enregistre les dates dans un champs datetime sous le forme 2008-12-31 00:29:43 .

Là il faudrait que je fasse une page qui génère une requête ajoutant 6 mois à chaque datetime, puis classant les résultats par datetime, c'est ça ?

Peut-on faire un ORDER BY sur le datetime ?
 
WRInaute passionné
Oui tu peux faire le ORDER BY sur le datetime


Tu peux même faire directement un truc du genre :
Code:
select champ1, champ2, dateDebut + interval champDuree month as dateFin
from taTable
order by dateFin
 
WRInaute passionné
Ok alors c'est tout simple en fait. J'entre manuellement dans un input text la date de fin d'abonnement, par exemple 2008-06-15 00:00:00 , j'insère ça dans un champ datetime et ensuite je fais un order by sur les différents datetime pour voir quels sont les prochains abonnement qui prennent fin.

J'ai bon ?
 
Discussions similaires
Haut