Aller au contenu

Gestion des abonnements


eternity

Sujets conseillés

Salut :)

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

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 :)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

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

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 :

$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 ?

Lien vers le commentaire
Partager sur d’autres sites

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 :)

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 :)

Merci pour ta réponse ;)

Lien vers le commentaire
Partager sur d’autres sites

1er janvier 2006, les périodes de fin possibles seront le 1er mars 2006

Avril. :P

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...

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.

Lien vers le commentaire
Partager sur d’autres sites

exact ! mon cerveau doit etre partie en vacances avant moi :)

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

Merci encore, au plaisir :)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...