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

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : décembre 2008
    Messages : 533
    Points : 293
    Points
    293

    Par défaut Condition if entre deux date

    Bonjour,
    J'ai un problème de logique qui est très simple mais que je n'arrive pas à résoudre.
    Je veux qu'une date soit comprise entre deux bornes (exemple '2002-02-28' et '2018-12-25'), sinon je crée un message d'erreur.
    J'ai essayé les conditions des lignes 1 et 2 et dans tous les cas, le code de la ligne 4 est exécuté.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		//if ( "$y-$m-$d" < $debutTable or "$y-$m-$d" > $finTable )
    		if ( !( "$y-$m-$d" >= $debutTable) and ( "$y-$m-$d" <= $finTable ) )
    		{
    			$errors[] = "Le calendrier ne peut pas calculer la valeur à cette date (trop ancienne ou trop récente) !";
    		}

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    13 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 13 676
    Points : 27 698
    Points
    27 698

    Par défaut

    Bonjour,

    tu n'as jamais utilisé les fonctions de date en PHP ?
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : décembre 2008
    Messages : 533
    Points : 293
    Points
    293

    Par défaut

    1) Ton lien ne marche pas. Je présume qu'il s'agit de cette page: http://php.net/manual/fr/ref.datetime.php.
    2) J'ai déjà utilisé les fonction de dates mais je ne suis pas très à l'aise avec.
    3) Il me paraît plus simple de faire une simple comparaison de chaîne entre deux bornes, d'autant que j'ai donné un exemple mais que les dates réelles peuvent être très anciennes (plusieurs siècles) donc plus anciennes que l'origine du timestamp (01/01/1970)
    4) Mon problème peut, éventuellement, être plus large que l'application de dates et être généralisé à la vérification qu'une valeur se situe dans un intervalle donné. C'est donc le problème de logique que je voudrais résoudre.

  4. #4
    Membre émérite
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    juin 2008
    Messages
    1 725
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : juin 2008
    Messages : 1 725
    Points : 2 828
    Points
    2 828
    Billets dans le blog
    5

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $deb= new DateTime("0000-01-01");
    $fin = new DateTime("1300-12-31");
    $curdate=new DateTime("0000-01-02");
    //$curdate=new DateTime("9999-01-02");
    if($deb<=$curdate && $curdate <= $fin){
       echo 'inclus';
    }
    else{
       echo 'exclus';
    }
    ?>
    Mes billets de blog : un billet = une problématique précise
    It's easier to be friends with lots of people online than one person in person!

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : décembre 2008
    Messages : 533
    Points : 293
    Points
    293

    Par défaut

    Merci Dendrite.
    Comme je le pensais, je n'ai effectivement pas besoin de passer par les fonctions de dates. Mon problème venait d'un mauvais format de $debutTable et $finTable.

  6. #6
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    13 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 13 676
    Points : 27 698
    Points
    27 698

    Par défaut

    Tu ne compares pas des "dates", mais juste des chaînes de caractères.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : décembre 2008
    Messages : 533
    Points : 293
    Points
    293

    Par défaut

    Citation Envoyé par jreaux62 Voir le message
    Tu ne compares pas des "dates", mais juste des chaînes de caractères.
    Tu as raison mais dans la mesure où les chaînes sont toutes formatées au format de date SQL, ça revient au même. Non? Mais c'est vrai que dans ce cas ma question était mal posée.

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

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