Version complète: sur le forum Webmaster Hub : Gestion des abonnements
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
eternity
Salut smile.gif

je profite des vacances pour faire quelques améliorations sur mes sites comme beaucoup d'entre vous sans doute smile.gif

Je coince ma gestion des abonnements... Je sais quand un abo se contact mais quand la personne veux le stopper et que cet abo est trimestriel par exemple j'ai du mal à déterminer une date de fin.

Quand un utilisateur prend un abo 1mois, 3 mois ou 6 mois, j'enregistre la date du jour dans mysql et la référence abo qui contient le nombre de mois, ceux ci sont renouvellés automatiquement à chaque période anniversaire.
j'ai ensuite une page de désabonnement et je dois déterminer suivant la date d'abonnement et la durée de l'abonnement une date de fin.
Si l'utilisateur stop son abo avant la date anniversaire ou si l'abo est mensuel pas de probleme par contre si l'utilisateur a pris un abo trimestriel par exemple le 01-01-2007 et qu'il se désabonne le 01-07-2007 je ne vois pas trop comment déterminer cette date de fin...

Quelqu'un aurait une idée sur la marche à suivre ?
merci smile.gif
sarc
Bonjour,

Effectivement les vacances sont propices aux nettoyages du printemps, et programmation acharnée... biggrin.gif

J'avoue que je comprends pas vraiment ce que tu veux faire, et je comprends pas ce que tu appelles "date de fin" en cas de désabonnement. C'est la date qui clôt le trimestre en cours, par exemple ?

Tu peux utiliser un truc du genre :
CODE
$date_fin = date("Y-m-d", strtotime("$mois/$jour/$annee + 3 months");

Avec $jour $mois et $annee qui sont les trois variables de début de l'abonnement...

Je suis pas certain du tout que ça marche, j'ai pas testé, mais en gros ça veut dire :
strtotime > renvoie le timestamp de trois mois après le début de l'abonnement
date > Renvoie la date de trois mois après, sous forme "AAAA-mm-jj"...

Ca t'avance ou pas du tout ?
eternity
ben en fait "date de fin" c'est la date de fin d'abonnement.
par exemple si un user a pris un abo de 3 mois renouvellable le 1er janvier 2006, les périodes de fin possibles seront le 1er mars 2006, 1er juin 2006, 1er septembre 2006 etc.
bien sur je ne connaitrais cette date de fin que lorsque l'user stoppera son abonnement et je dois la calculer suivant la date de son abo et en fonction des dates anniversaires de renouvellement smile.gif

si l'user qui a pris l'abo le 1er janvier 2006 stop le 15 juillet je dois avoir en période de fin le 2007-09-01

je vais regarder de plus près ce que tu me donne en fonction php mais je pense qu'il manque quelque chose smile.gif

Merci pour ta réponse wink.gif
sarc
CITATION
1er janvier 2006, les périodes de fin possibles seront le 1er mars 2006

Avril. tongue.gif

J'ai compris ce que tu voulais !

Tu peux faire une petite fonction récursive qui fera bien le boulot, en rajoutant trois mois à chaque fois...

CODE
function date_fin($date_debut) // Avec $date_debut de la forme MM/JJ/AAAA
{
$troismoisapres = date("m/d/Y", strtotime("$mois/$jour/$annee" + 3 months");
if ($troismoisapres > date("m/d/Y")) return $troismoisapres;
else return date_fin($troismoisapres);
}


En fait, ça calcule une date trois mois après, et si cette date est inférieure à la date actuelle, tu rappelle la fonction en mettant la date de trois mois après comme date de référence.
(Je sais plus si la comparaison des dates marche bien, sinon au pire tu les passes en timestamp...)

Edit : j'ai écrit une bêtise dans mon message d'avant, je la modifie tout de suite.
eternity
exact ! mon cerveau doit etre partie en vacances avant moi smile.gif

je te remercie pour la function et pour tes lumières, j'ai adapté tout ca et ca à l'air de fonctionner smile.gif je ferais les tests demain

Merci encore, au plaisir smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.