IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Requête pour comparer 2 dates


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Par défaut [SQL] Requête pour comparer 2 dates
    bonjour
    j’ai un problème pour comparer 2 champs dates. Je voudrais comparer la date de fin par rapport à la date du jour. Si la date du jour est inférieure à la date de fin de la table, autorisation d’accès à la page commande, si la date du jour est supérieure à la date de fin, direction page de réabonnement.
    J’ai trouvé ce script qui fonctionne :

    <?php
    $DateExpiration="2007-12-26";
    if ((strtotime($DateExpiration) - mktime(0 , 0 , 0 , date("m") , date("d") , date("Y"))) < 0)
    echo "La date d'expiration est dépassée"; else echo"date valide";
    ?>
    mais j’ai des difficultés à l’intégrer dans ma page avec une requête. Pourriez-vous m’aider

  2. #2
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    SQL intègre très bien les calculs de date....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $SQL = 'SELECT name_abo FROM abonnement WHERE date_fin > NOW() AND id ='.$id;
    Si la requete te renvoi quelque chose, c'est que la date de fin est bien supérieure a la date du jour. Si cela ne te renvoi rien, c'est que la date de fin est dépassée pour cet abonné

    @+
    cadou

  3. #3
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Pour compléter un peu la réponse de Cadou, je dirais:

    Il y a de multiples façon de répondre à ton problème avec SQL. La solution que propose Cadou me semble assez directe, mais en fonction de ce que tu veux faire il faut adapter.

    En premier lieu, a ta place j'utliserai des TimeStamp car les comparaisons sont plus faciles.

    Ensuite j'imagine que ta date d'expiration est soit stockés dans une table de ta base, soit sous forme de Cookie dans le client, soit encore sous forme de SESSION php.

    Il faut trouver une solution adaptée a ton besoin.

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Par défaut
    salut
    merci pour vos réponses. effectivement ma date d'expiration est stockée dans une table de ma base.
    Explication: pour accéder à la commande le client doit entrer son identifiant et mot de pass, ensuite grâce à une variable de session, je veux tester si la date d'expiration de son abonnement n'est pas dépassé par rapport à la date du jour.
    si la date d'expiration est supérieure à date du jour, on continue le code de la page commande.
    si la date d'expiration est inférieure à la date du jour, il devra être redirigé vers la page de réabonnement.
    la table clients est composée du nom, prenom, adresse, cp , ville, email, mot de pass, date de saisie, date d'expiration.
    c'est pour réaliser la requête et le test que je patauge un peu.

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Par défaut
    bonsoir
    voici ma réalisation, mais j'ai la fonction date_fin NOW() ne fait la difference <ou>

    Code : 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
    <?php require_once('../Connections/connexionboutique.php'); ?>
    <?php require_once('../includes/treemenus/MX_TreeMenu.inc.php'); ?>
    <?php
    //-------------------------------------------------Jeu rsRappelClient
    $colname_rsRappelClient = "1";
    if (isset($_SESSION['MM_Username'])) {
      $colname_rsRappelClient = (get_magic_quotes_gpc()) ? $_SESSION['MM_Username'] : addslashes($_SESSION['MM_Username']);
    }
    mysql_select_db($database_connexionboutique, $connexionboutique);
    $query_rsRappelClient = sprintf("SELECT ID, date_fin FROM clients WHERE email = %s  and date_fin > NOW()", $colname_rsRappelClient);
    $rsRappelClient = mysql_query($query_rsRappelClient, $connexionboutique) or die(mysql_error());
    $row_rsRappelClient = mysql_fetch_assoc($rsRappelClient);
    $totalRows_rsRappelClient = mysql_num_rows($rsRappelClient);
    //-----------------------------------------Mémorisation du ID client dans la session
    $clientID= mysql_result($rsRappelClient,0,'ID');
    $_SESSION['clientID']=$clientID;
    avez-vous une idée?

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Par défaut
    bonjour
    merci beaucoup ça fonctionne, j'ai rectifié seulement la fonction `date_fin` > NOW()
    je ne suis pas un pro en php, pourrais-tu m'aider à réaliser le code pour rediriger le client vers la page de réabonnement lorsque la date de fin est inférieure à la date du jour.
    si inférieure: redirection vers page réabonnement
    si supérieure: on continue la commande

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Requête SQL : problème pour passer une date
    Par phoon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/11/2009, 07h29
  2. [SQL] Requête pour afficher des valeurs uniques
    Par gcvoiron dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/11/2007, 17h38
  3. regex pour comparer des dates, des chiffres, des nombres
    Par lex13 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/07/2007, 11h51
  4. Probleme Pour Comparer Des Dates
    Par Domingo60 dans le forum VBScript
    Réponses: 7
    Dernier message: 25/04/2007, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo