Calcul date en php

Fermé
JM-Studio - 21 sept. 2009 à 17:05
 JM-Studio - 25 sept. 2009 à 16:56
Bonjour,

Voilà, je galère depuis ce matin sur un morceau de code.

Je voudrais faire afficher des résultats suivant les dates.

1 date d'inscription (insérée dans une BDD) sous forme de "date"
1 date d'expiration(insérée dans une BDD) sous forme de "date"


voici ma source:

<?php

//Je crée ma requete qui va chercher les infos dans ma BDD.
//Ensuite:

$inscription = $row_R_mon_compte['inscrit_le'];
$expire = $row_R_mon_compte['expire'];

if ($inscription <= $expire) { echo 'Abonnement actif<br>'; }
if ($inscription >= $expire) { echo 'Abonnement innactif<br>'; }

?>


Mais ca ne change pas. j'ai beau tout essayer, changer les dates directement depuis phpmyadmin sous forme de YYYY-mm-dd etc.. mais rien a faire ca ne veut pas.

Quelqu'un aurrait une solution svp?? C'est assez urgent, c'est pour une cliente :/
A voir également:

13 réponses

Bonjour

ça devrait être bon, sauf que le jour de l'expiration tu vas afficher à la fois actif et inactif
As-tu fait echo $inscription, ' ',$expire; pour voir ce que tu compares réellement ?
0
oui, oui,

<?php
echo 'abonné le: ' . $inscription . '<br>';
echo 'expire le: ' . $expire . '<br><br>';
?>

ca me sort bien des dates différentes. Mais ca ne marche pas. J'ai toujours abonnement actif :(
0
Peux-tu donner un exemple précis avec des valeurs de $inscription et de $expire pour lequel tu vois 'actif' alors que tu attends 'inactif' ?
0
En fait, je suis en train de développer un site de rencontre avec abonnement sur 1 an.

La personne paie via paypal. Une fois payé, l'abonnement se renouvelle pour 1 an.

Donc dans la BDD on a

1 champs "inscrit_le" sous forme de "date"
et
1 champs "expire" sous forme de "date"

Le but serait donc de faire en sorte que si la date inscription est inférieur ou égal à la date d'expiration, on affiche "abonnement actif" sinon, on affiche "abonnement innactif"

C'est pour ca que j'ai essayé avec:

<?php

$inscription = $row_R_mon_compte['inscrit_le'];
$expire = $row_R_mon_compte['expire'];

if ($inscription <= $expire) { echo 'Abonnement actif<br>'; }
if ($inscription >= $expire) { echo 'Abonnement innactif<br>'; }

?>

:(
0

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

Posez votre question
J'ai bien compris.
Ce que je te demande, ce sont deux dates précises pour lesquelles tu attends 'inactif' et que tu vois 'actif', puisque tu dis que c'est ce qui se passe.
0
ha ok,

alors exemple:

<?php

//Devrais etre innactif vu que l'on est aujourd'hui le 2009-09-21 donc abonnement innactif
$inscription = '2009-09-07';
$expire = '2008-09-07';

//Devrais etre actif vu que aujourd'hui on est le 2009-09-21

$inscription = '2008-09-20';
$expire = '2009-09-22';

?>
0
Si tu veux que le résultat dépende de la date d'aujourd'hui, il faudrait peut-être que la date d'aujourd'hui intervienne dans le test que tu fais !!!!
Toi tu compares la date d'expiration à la date d'inscription, elle est toujours supérieure à la date d'inscription, donc c'est toujours actif qui s'affiche.
Un peu de bon sens...
0
Hmm, tu as surement raison. Mais je ne vois pas vraiment comment m'y prendre. Je vais continuer à gratter. :p
0
Ca y est!!!! j'ai enfin trouvé. Après m'être battu avec ce p....n de morceau de code. Je donne la solution au cas ou ca pourrais aider quelqu'un.


<?php
//Dates inscrites dans une BDD sous forme de "date"
//Bien sur faut créer une requète plus haut. Vais pas vous faire tous le travail hein :p

$inscription = $row_R_mon_compte['inscrit_le'];
$expire = $row_R_mon_compte['expire'];

echo '<a href="' . $logoutAction . '">Fermer ma session</a><br>';
echo 'abonné le: ' . $inscription . '<br>';
echo 'expire le: ' . $expire . '<br><br>';

if ($inscription <= $expire && date('Y-m-d') <= $expire) { echo 'Abonnement actif<br>'; }
else if(date('Y-m-d') >= $expire) { echo 'Abonnement innactif<br>'; }

?>


Et voilà :D
0
Ça doit ressembler à ça...
Mais il te reste toujours le problème que j'avais signalé dans mon 1er message : le jour le l'expiration, tu vas afficher à la fois actif et inactif. Il faut que l'un des deux tests exclue la date.
0
non, même pas. j'ai fais des tests en changant les dates dans ma BDD, et tous fonctionne parfaitement :)
0
Utilisateur anonyme
25 sept. 2009 à 16:28
Euh...perso, tu es sur que cela marche?

Tu compares des chaînes de caractères entre elles avec une opérande >=....

Grosso modo c'est comme si tu faisais 'abcdefgh' >= 'ijklmnopq'

Je savais même pas que ça avait un sens :-s

A mon avis cela ne marche pas...tu devrais comparer des timestamp et convertir tes dates en timestamp avant de comparer tes timestamp! C'est même vivement conseillé....
0
ben écoutes, j'ai fais plusieurs tests, dailleur, là je travaille dessus et ca marche :)
0