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 :/

13 réponses

  1. 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
  2. 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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. 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
  9. JM-Studio
     
    Hmm, tu as surement raison. Mais je ne vois pas vraiment comment m'y prendre. Je vais continuer à gratter. :p
    0
  10. 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
  11. 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
  12. JM-Studio
     
    non, même pas. j'ai fais des tests en changant les dates dans ma BDD, et tous fonctionne parfaitement :)
    0
  13. 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
  14. JM-Studio
     
    ben écoutes, j'ai fais plusieurs tests, dailleur, là je travaille dessus et ca marche :)
    0