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 :

Comparaison d'heure + 6 heures


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut Comparaison d'heure + 6 heures
    Bonjour a tous, j'ai une date et heure inscris dans ma BDD en format d/m/Y G:i:s et je la compare a la date et heure actuelle, jusqu'à la pas de problème...

    Mais j'aimerai que si l'heure et date actuelle est supérieur de 6 heures a celle de la bdd je reçois un message avec mon echo...

    J'ai un trou, je ne vois pas comment le faire...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $recup = mysql_query("SELECT * FROM table WHERE id_order_ass = '29'");
    if ($row=mysql_fetch_array($recup) )
      {$date_ass=$row['date_ass'];}
    $date1 = substr($date_ass=$row['date_ass'], 6, 4).substr($date_ass=$row['date_ass'], 3, 2).substr($date_ass=$row['date_ass'], 0, 2).$date_ass=$row['date_ass'];
    $date2 = date("d/m/Y G:i:s");
    if ($date1 != $date2)
    {
    echo "pas bon !" ;
    }?>

    Pouvez vous 'aider?


    Merci d'avance!!!!

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $date_now_plus_6hours = date("Y-m-d H:m:s", strtotime("now +6 hour"));
    echo "<p>Actuellement : ".date("Y-m-d H:m:s")."</p>";
    echo "<p>Dans 6 heures : $date_now_plus_6hours</p>";
    // AFFICHE :
    /*
    Actuellement : 2009-04-01 12:04:55
     
    Dans 6 heures : 2009-04-01 18:04:55
    */

  3. #3
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Par défaut
    Bonjour,

    Tout dépends pour quelle utilisation c'est, mais sinon, si dans ta DB tu as un champ de type date, tu peux aussi demander ( gentillement, ça coute rien, des fois qu'il se vexe ) à SQL ( voir ici ) .

    Sinon, tu transforme ta date en timestamp avec mktime( ) et les bons arguments qui viennent de ta DB ( avec une regexp pour pas y passer 3h ^^ ), tu soustrait à mktime( ) et tu compare la différence à 6 * 60 * 60

    Bonne journée.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut
    Vu que strtotime ne fonctionne pas avec une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date2 = ($date1, strtotime("now +6 hour"));
    Et que j'aurai préférée faire de cette manière que d'utiliser mktime( )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $recup = mysql_query("SELECT * FROM table WHERE id_order_ass = '29'");
    if ($row=mysql_fetch_array($recup) )
      {$date_ass=$row['date_ass'];}
    $date1 = substr($date_ass=$row['date_ass'], 6, 4).substr($date_ass=$row['date_ass'], 3, 2).substr($date_ass=$row['date_ass'], 0, 2).$date_ass=$row['date_ass'];
    $date2 = ($date1, strtotime("now +6 hour"));
    $date3 = date("d/m/Y G:i:s");
    if ($date3 >= $date2)
    {
    echo "Pas bon !" ;
    }?>

    Y a t'il un moyen de le transformer en format date pour pouvoir l'utiliser avec strtotime tout en sachant qu'il n'est pas dans un format date dans ma BDD?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour moi le probleme de départ est que n'utilise pas un champ Date ; tu te prives donc déjà des fonctionnalités mysql sur les dates.
    Ca t'oblige en plus a retravailler tes dates a la main.

    Vu que strtotime ne fonctionne pas avec une variable.
    que veux-tu dire ?

    if ($date3 >= $date2)
    Tu ne peux pas comparer des dates comme ca en PHP car pour lui ce sont justes des chaines.
    Ainsi '1/4/2009' > '02/04/2009' par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date2 = ($date1, strtotime("now +6 hour"));
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date2 = strtotime($date1 ." +6 hour");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par DjChat Voir le message
    Vu que strtotime ne fonctionne pas avec une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date2 = ($date1, strtotime("now +6 hour"));
    Et que j'aurai préférée faire de cette manière que d'utiliser mktime( )
    Normal quand on ne prend pas le temps d'aller sur PHP Manual, on risque pas de connaitre les synthaxes...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // si $date est DATE_TIME
    $date = date("Y-m-d H:m:s"); // $date est un date_time de maintenant
    $date_plus_6hours = date("Y-m-d H:m:s", strtotime($date." +6 hour"));
     
    // si $date est un TIMESTAMP
    $date = time(); // $date est un timestamp de maintenant
    $date_plus_6hours = $date + 60*60*6; // 60*60 = 1h * 6 = 6h

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut
    J'ai fait une mauvaise analyse en voulant comparer deux date...

    Sinon pour le champ date de la BDD ce n'est pas moi qui l'ai créer, mais sinon je viens de constater qu'il y un champ timestamp donc juste a faire une comparaison...


    Merci pour votre aide....

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/01/2015, 08h56
  2. [11gR2] Problème de comparaison de dates et heures
    Par juju05 dans le forum SQL
    Réponses: 1
    Dernier message: 21/03/2013, 17h13
  3. Comparaison des dates et heures
    Par IcedLand dans le forum Sql Developer
    Réponses: 1
    Dernier message: 21/09/2007, 10h04
  4. [DEBUTANT]Comparaison sur date et heure
    Par tripper.dim dans le forum Oracle
    Réponses: 15
    Dernier message: 15/11/2005, 18h25
  5. SQL critère heure + 2 heures ?
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 03/10/2005, 08h47

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