Nombre de jours restants avant l'expiration de l'abonnement d'un client

Signaler
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour,

les amis je suis vraiment bloquer..... je demande votre aide

j'essaie de calculer le nombre de jours ou de mois restant à un client avant l'expiration de son abonnement,

exemple : le client à ouvert son compte le 02-10-2011 et il a choisi comme durée d'abonnement 3 mois.

donc l'affichage du résultat dans l'espace client sera par exemple : Il vous reste X mois et Y jours avant la fin de votre abonnement.

donc en fait j'ai du mal a traiter ça, surtout que je dois prendre compte le nombre de jours de chaque mois...

Quelqu'un aura une solution a me proposer ?? je serai vraiment très reconnaissant

Merci d'avance pour votre aide

21 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonjour

as tu un code ?
utilises tu une base mysql
utilises tu timestamp

il faut comparer la date du jour
à celle de l'enregistrement

récupérer les deux dates les mettre en timestamp et comparer


Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
un peu de litterature ...

datetime vers timestamp

<?php
function datetime2timestamp($string) {list($date, $time) = explode(&#8217; &#8216;, $string);
list($year, $month, $day) = explode(&#8217;-', $date);
list($hour, $minute, $second) = explode(&#8217;:', $time);

$timestamp = mktime($hour, $minute, $second, $month, $day, $year);

return $timestamp;
}
?>

http://phpcodeur.net/articles/php/dates


Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
je reposte la fonction il y a des caractères
qui s'affichent en code html

function datetime2timestamp($string) {list($date, $time) = explode(&#8217; &#8216;, $string);
list($year, $month, $day) = explode(&#8217;-', $date);
list($hour, $minute, $second) = explode(&#8217;:', $time);

$timestamp = mktime($hour, $minute, $second, $month, $day, $year);

return $timestamp;
}


Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
explode(’-', $date);

comme explode('-', $date);

explode(’:', $time);

comme explode(':', $date);
Bonne programmation !
Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
15
Et en PHP 5.3 tu as aussi dateDiff qui est assez sympathique.
S.
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
1
Merci pour vos réponses, mais en fait le problème c'est que quand l'utilisateur s'abonne

par exemple le 02-10-2011 et qu'il a choisi 3 mois dans son abonnement par exemple...

comment est ce que je peux faire pour connaitre la date de fin de son abonnement qui est

d'ici 3 mois tout en prenant compte le fait que dans chaque mois il y'a un

nombre de jour différent.

une fois ceci est fait tes vos réponse tous utiles?

Merci d'avance pour aide
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
echo '<hr>';
echo $plus3mois=strtotime("+3 month");
echo '
';
echo $dans3mois=date('Y-m-d H:i:s',$plus3mois);
echo '<hr>';


Bonne programmation !
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
1
Bonsoir,

Merci beaucoup pour ta réponse, j'ai juste un petit soucis c'est que ce que tu as fais
permet d'ajouter 3 mois a la date par défaut ou date système...

Mais comment faire pour ajouter à n'import quel date 3 mois

exemple : $Demarabonn=01-09-2011;

quand j'ai fais ça :

echo $plus3mois=strtotime("+3 month");
echo $dans3mois=date($Demarabonn,$plus3mois);

ça n'a pas marcher du tout..t'aura une solution pour ça

Merci infiniment pour ta réponse elle m'aidera bcp
Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
15
Moi je répète ma question: Es-tu sur PHP 5.3 ?
Quelle est ta version ?
S.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
essaie

<?php
echo 'dans 10 jours : '.$dans10jours = date("d/m/Y", mktime(0, 0, 0, date("m"), date("d")+10,  date("Y")));
//'02 janvier 2011' + 3mois
$mois3=90*24*60*60;
echo 'dans 3 mois depuis : 02 janvier 2011 donne '.$dans3mois = date("d/m/Y",( mktime(0, 0, 0, date(1), date(2),  date(2011)) + $mois3 ));

?>


Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
<?php
function date3mois($d,$plus=null){
static $newdate;
$dx=array();
$dx=explode('/',$d);
$newdate = date("d/m/Y",( mktime(0, 0, 0, date($dx[0]), date($dx[1]), date($dx[2])) + $plus ));
return $newdate;
}

echo date3mois('01/04/2010',$plus=90*24*60*60);
?>



Bonne programmation !
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Bonjour,

Tu aurais probablement du commencer par apprendre le php et lire la doc sur les dates. Ls helpeurs, dans leur grande bonté ont répondu une bonne dizaine de fois à ta question, mais apparement, tu n'as toujours pas su adapter le truc, ni chercher les fonctions qu'ils utilisent sur php.net.

Va lire la doc des fonctions
date
mktime

Cordialement,

Maxime
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
je te reposte ma fonction j'ai une erreur
dans la suite des arguments de mktime
c'est donc :

<?php
echo '<hr>';
function date3mois($d,$plus=null){
static $newdate;
$dx=array();
$dx=explode('/',$d);
$newdate = date("d/m/Y",( mktime(0, 0, 0, date($dx[1]), date($dx[0]), date($dx[2])) + $plus ));
return $newdate;
}

echo '01/01/2010 : '.date3mois('01/01/2010',$plus=90*24*60*60);
?>

Bonne programmation !
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
1
Merci infiniment cod57, pour ton aide

Pour coucou747 : je ne comprend pas ou est ton problème je demande de l'aide comme est ce que je le propose a mes amis des solutions sur ce forum quand je connais une réponse.

au lieu de dire des insultes et des ordres ça aurait été mieux si tu as proposer de l'aide, sinon reste en dehors de cette discussion
                        
                
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
40
[quote=midoxe]Pour coucou747 : je ne comprend pas ou est ton problème je demande de l'aide comme est ce que je le propose a mes amis des solutions sur ce forum quand je connais une réponse.

au lieu de dire des insultes et des ordres ça aurait été mieux si tu as proposer de l'aide, sinon reste en dehors de cette discussion/quote

non mais ... c'est le monde à l'envers

il est claire que tu ne comprends ni le php ni le Français ...

depuis le début tous les intervenants t'ont donné les bonnes réponses mais comme tu n'y comprends rien tu penses que ce n'est pas la bonne.

Quand à Coucou747 ... il n'y a aucune insulte dans son message .. ce n'est que la vérité mais elle ne semble pas te convenir ...
sur ce, tu décides de contacter les admins sous prétexte de "Dérangement" ...

Mais le dérangement c'est toi qui l'occasionne en ne comprenant pas les réponses et en faisant appel aux admins pour des problèmes imaginaires.

Suis les conseils de Coucou747 ils sont très judicieux ... d'ailleurs c'est pas là (apprendre les bases du php) que tu aurais du commencer ça t'aurais éviter de perdre ton temps et par la même celui des intervenants.



[hr]@+Cirec
[hr]
Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
15
Et moi qui cherchais à l'endoctriner à la POO.. c'est peine perdu.
pour cod57.. y'a des choses que je ne comprends pas..

echo '01/01/2010 : '.date3mois('01/01/2010',$plus=90*24*60*60);

Il sert à quoi ton '$plus=' ??

function date3mois($d,$plus=null){

L'intérêt du =NULL ?
static $newdate;

L'interêt de cette ligne ?

$dx=array();

Inutile avec la ligne suivante..

$dx=explode('/',$d);

Croisons les doigts pour qu'il donne une chaine bien formattée (vu le gars en question.LOL !!)

$newdate = date("d/m/Y",( mktime(0, 0, 0, date($dx[1]), date($dx[0]), date($dx[2])) + $plus ));

1. Ca peut passer en return directement non ??
2. + $plus avec $plus = NULL c'est plutot moyen
3. date($dx[1]) => tu préfères pas $dx[1] tout seul ??

S.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
@syndrael

ma fonction est pédagogique est pas une
optimisation de code je détaille tout pour que que les non initiés comprennent ...


$plus=null => pas de return si le 2eme arg est manquant ...

$plus comme ça il peut décider de la durée

fonctionne
echo '01/01/2010 : '.date3mois('01/01/2010',$plus=90*24*60*60);

fonctionne pas
echo '01/01/2010 : '.date3mois('01/01/2010');

c'est vrai que on peut tout placer dans le return mais pas très clair pour un débutant

j'ai passé passer plus de temps à écrire mes remarques que la fonction

++ tous le monde

Bonne programmation !
Messages postés
2380
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
15
Pédagogique ok.. mais le gars il va prendre ça pour argent comptant..LOL !!
$plus=null => pas de return si le 2eme arg est manquant ...

Ben raison de plus pour lui faire comprendre qu'une fonction ça doit avoir un bon nombre d'argument.. et pafff pour le bizu !! LOL..
date3mois('01/01/2010',$plus=90*24*60*60)

Je l'ai toujours pas compris le $plus = ..LOL !!
S.
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
Bonjour,

pas besoin de faire un 90*24*60*60, mktime gère bien l'ajout de mois au mois passé en paramètre (oula) et décalera si besoin (cf la doc de mktime)

<?php

$madate = '01-05-2010'; // ma date exemple

list($jour, $mois, $annee) = explode('-', $madate);

// on ajoute 3 mois à cette date
$iFuturDate = mktime(0, 0, 0, $mois+3, $jour, $annee);

echo date('d-m-Y', $iFuturDate);


donnera (roulement de tambour) : 01-08-2010


bonne après midi
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
en fait tu as raison syndrael je pense qu'il débute le php ... mais je pense que son souci comme 80 % des questions faut que ça fonctionne le reste ...
le problème avec les forums c'est comme les sms c'est des-fois vide d'émotions c'est pourquoi coucou747 c'est pris cette remarque alors que à la base ça remarque est correcte


Bonne programmation !