1238450400 c'est que j'obtiens pour $adh
bon je m'étais fait un petit script pour me faciliter la vie, voilà ce qu'il me sort
Donc c'est normal que le script te dise de payer, vu que d'apres la date ca devrait être payé depuis today à minuit et 3 minutesLa date du timestamp 1238450400 est le 31-03-2009 00:03:00
j'en peux plus, le strtotime m'a rendu fou lol, il faut que j'enlève l'heure c'est ça
hmm non mais il est normal que ça t'affiche "il est temps de payer" vu que ce message s'affiche à partir du moment où $adh vaut "now -1 mois"
La date $adh est ce matin, si tu ne veux plus que le message s'affiche après la date passée, il faut écrire :
Afin de vérifier pour les X premiers mois de l'année précédent chaque anniversaire d'adhésion
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if( $date_max > $adh && $adh > time() ) { echo "<p>Il est temps de payer !</p>"; } else { echo "<p>C'est bon, t'as le temps avant de passer à la caisse</p>"; }
là il m'affiche le la deuxième condition
le problème c'est que j'ai un membre où la date d'adhésion est le 16/04/2008 donc ça doit afficher juste ce membre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 else { echo "<p>C'est bon, t'as le temps avant de passer à la caisse</p>"; }
excuse moi si je me trompe :
$date_max c'est la date d'aujourd'hui + 1 mois
mais $adh > time() ???
$adh c'est la date d'adhésion (avec l'année en court)
donc si le gars s'était inscrit le "2008-04-29"
$adh = 2009-04-29 (converti en timestamp)
time() = le timestamp courant (2009-03-31 17:35:00)
franchement je vois pas où est l'erreur,
ce qu'on fait c'est :
si $date_max (today +1mois) est supérieur à la date d'adh et que adh est supérieur à time() alors affiche moi lui
y a pas un truc qui cloche ? j'ai l'impression que sa "résonne" chez moi mais je vois pas
arf arf arf je crois que je me suis un peu perdu dans le code à force de l'étaller toute la journée
essaye avec
Ce qui donnerait (t'as raison, ça fait du bien d'écrire en francais ^^) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if( $date_max < $adh && $adh > time() ) {
si la date d'adhésion est plus petit que today +1 mois et qu'elle est plus grande que today => alors on affiche qu'il faut payer
PS : là j'vais quitter le boulot (ouais, pas grand chose à faire today, j'ai bossé trop vite ) j'ai 40 minutes de train pour rentrer chez moi, j'vais en profiter pour relire toute la conversation depuis le début
Voila, je suis chez moi
Comme je l'avais écrit, il faut bel et bien comparer ta date d'adhésion avec DEUX dates, j'avais écrit time() un peu trop vite, en effet comparer à la date du jour => ça donne n'importe quoi ^^
Sans le stress de me faire chopper au taff à trainer sur un forum, il m'a fallu que 5 minutes pour trouver la solution. Attention, j'ai tout repris de 0
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php $echeance = "1 month"; $adhArray = array("2008-09-23", "2009-03-31", "2007-04-16", "2043-04-29", "2007-05-01", "2007-05-02", "2007-05-03", "2007-05-04", "2007-05-05"); $result = array(); foreach( $adhArray AS $adh ) { $adh_comp = date("m-d", strtotime($adh)); $date_min = date("m-d", strtotime(date("Y-m-d")." -".$echeance)); $date_max = date("m-d", strtotime(date("Y-m-d")." +".$echeance)); if( $adh_comp >= $date_min && $adh_comp <= $date_max ) { $result[$adh_comp] = "FAUT PAYER"; } else { $result[$adh_comp] = "FAUT PAS PAYER"; } } ?>
PS : En pièce jointe tu trouveras le fichier avec les commentaires / explications ainsi que le résultat
salut
en tout cas je te remercie, quand même tu étais une journée entière sur ce problème ,
Je viens de voir le code, j'ai modifié la sauce j'ai rajouté un peu de sel, poivre et le tout est joué , ça marche nickel chrome !
Je te remercie de tout cœur !!!!!
sur le pièce jointe j'ai vu un commentaire :
// Un tableau de date pour simuler ta bouche
mdr sans doute ma boucle, c'est pas grave lolllll
en tant cas je le re re répète merci !!
je voulais te demander en bonus lol
si tout cela aurait pu se faire en requete sql ?
yep grâce à BETWEEN, DATE_FORMAT et INTERVAL ^^
Partager