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

Langage PHP Discussion :

[Dates] Dates appartenant à un intervalle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 61
    Par défaut [Dates] Dates appartenant à un intervalle
    Bonjour tout le monde,
    Voila je voudrais avoir une date dans un intervalle c’est à dire lors de mon traitement je dois afficher que la liste qui est actif :
    Date fin < date actuelle < date fin +5
    20-02-2007 < 22-02-2007 < 25-02-2007
    Sachant que la date de fin et dans ma base de données dans des champs différents jour, mois et années
    Voilà mon traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $dateactu=date("d-m-Y"); 
     
    $datefin=$datefin."-".$moisfin."-".$anneefin;
     
    $jourj=$datefin;
    $moisj=$moisfin;
    $anneej=$anneefin;
    $mkdatefinal = mktime(0, 0, 0, $moisj, $jourj+5, $anneej);
    $datefinale = strftime("%d-%m-%Y", $mkdatefinal);
     
    if ($dateactu >> $datefin &&  $dateactu << $datefinale)
    { m’affiche la liste …..}
    else { msg pas de données à afficher}
    Dans mon cas il ne traite que la première ligne et me zap les autres 
    Je c’est pas si je suis claire dans ma demande, et
    Merci de votre aides

  2. #2
    Membre confirmé Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Par défaut
    salam

    une proposition stocker ds la base de données le timestamp au lieu des dates formatés (j/m/a).

    sa sera plus facile à manipuler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $lastday = mktime(0, 0, 0, 3, 0, 2007);
    echo strftime("Le dernier jour de Fevrier 2000 est : %d", $lastday);
     
    echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 2007));
    echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 2007));
    et si $jourj=30

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    surtout que si tu as la date dans la base de données tu peux gérer les date en sql au lieu de php

    et en sql c'est puissant et rapide

    en sql :
    aujourd'hui : NOW() (CURRENT_DATE existe aussi)
    ajouter ou retirer des jours : la fonction ADDDATE()



    en reconstruisant la date au bon format pour la bdd (peut etre avec la fonction TO_DATE() si besoin)

    Tu devrais pouvoir écrire une requête avec
    WHERE Date_fin < NOW() AND NOW() < ADDATE(Date_fin, INTERVAL 5 DAY)

    bref 1 ligne en sql
    (edit : à vérifier la syntaxe exacte des fonctions, de te je me trompe des fois)

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 61
    Par défaut
    merci pour votre reponse, j'ai tester de fair le test directement dans ma requete avec now() mais mon problème c'est que les date dans ma base c'est pas au format date, c'est a dir:
    j'ai un champs jourfin , un champs mois fin et un champs anneesfin
    qui sont des INT de plus je peux pas les modifier dans la base.
    alors j'ai tester la requete suivante:
    SELECT non,..joursfin,...
    FROM .....
    WHERE NOW()>$jourfin-$moisfin-$anneefin;

    Mais elle marche pas de plus j'ai plusieur personne qui doivent etre afficher.

    Et encore Merci pour votre réponse

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    c'est pour ça que je te disais de reconstruire la date

    avec un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STR_TO_DATE('CONCAT($jourfin,$moisfin,$anneefin)', '%d%m%Y')
    pour t'aider :
    les fonctions de date-temps
    http://dev.mysql.com/doc/refman/5.0/...functions.html
    les fonctions pour manipuler les strings
    http://dev.mysql.com/doc/refman/5.0/...functions.html

  6. #6
    Membre confirmé Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Par défaut
    look at this : (Article en anglais )
    PHPBuilder

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

Discussions similaires

  1. [AC-2000] Recherche par date comprise dans un intervalle
    Par polo31 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/04/2020, 16h56
  2. Verifier si une date est dans un intervalle
    Par Le gris dans le forum C#
    Réponses: 4
    Dernier message: 04/07/2011, 16h26
  3. [AC-2003] Valeur si date comprise sur un Intervalle
    Par doudou1609 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/09/2010, 14h23
  4. [AC-2003] Retrouver des dates situées dans un intervalle
    Par CC25 dans le forum VBA Access
    Réponses: 5
    Dernier message: 29/05/2010, 13h23
  5. [XL-2003] vérifier si heure + date est dans l'intervalle
    Par dawood dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2009, 17h46

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