Calcul date en php

JM-Studio -  
 JM-Studio -
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

le père
 
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
JM-Studio
 
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
le père
 
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
JM-Studio
 
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
le père
 
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
JM-Studio
 
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
le père
 
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
JM-Studio
 
Hmm, tu as surement raison. Mais je ne vois pas vraiment comment m'y prendre. Je vais continuer à gratter. :p
0
JM-Studio
 
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
le père
 
Ç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
JM-Studio
 
non, même pas. j'ai fais des tests en changant les dates dans ma BDD, et tous fonctionne parfaitement :)
0
Utilisateur anonyme
 
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
JM-Studio
 
ben écoutes, j'ai fais plusieurs tests, dailleur, là je travaille dessus et ca marche :)
0