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

cs_midoxe
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
- 6 oct. 2011 à 10:55
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
- 7 oct. 2011 à 15:13
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

cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
6 oct. 2011 à 13:42
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 !
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
6 oct. 2011 à 13:45
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 !
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
6 oct. 2011 à 13:48
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 !
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
6 oct. 2011 à 13:50
explode(’-', $date);

comme explode('-', $date);

explode(’:', $time);

comme explode(':', $date);
Bonne programmation !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
syndrael
Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
19
6 oct. 2011 à 16:15
Et en PHP 5.3 tu as aussi dateDiff qui est assez sympathique.
S.
0
cs_midoxe
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
1
6 oct. 2011 à 17:46
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
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
6 oct. 2011 à 19:35
echo '<hr>';
echo $plus3mois=strtotime("+3 month");
echo '
';
echo $dans3mois=date('Y-m-d H:i:s',$plus3mois);
echo '<hr>';


Bonne programmation !
0
cs_midoxe
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
1
6 oct. 2011 à 22:46
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
0
syndrael
Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
19
7 oct. 2011 à 08:50
Moi je répète ma question: Es-tu sur PHP 5.3 ?
Quelle est ta version ?
S.
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
7 oct. 2011 à 10:01
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 !
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
7 oct. 2011 à 10:40
<?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 !
0
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
41
7 oct. 2011 à 10:43
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
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
7 oct. 2011 à 10:53
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 !
0
cs_midoxe
Messages postés
98
Date d'inscription
samedi 25 septembre 2010
Statut
Membre
Dernière intervention
17 janvier 2012
1
7 oct. 2011 à 12:05
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

                
0
Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
7 oct. 2011 à 13:05
[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]
0
syndrael
Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
19
7 oct. 2011 à 13: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.
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
7 oct. 2011 à 13:43
@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 !
0
syndrael
Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
19
7 oct. 2011 à 13:56
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.
0
cs_47
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
7 oct. 2011 à 14:04
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
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
7 oct. 2011 à 14:11
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 !
0