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

Symfony PHP Discussion :

différence entre deux heures [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Par défaut différence entre deux heures
    Salut à tous!

    Je travaille sur un projet depuis un certain temps! Cela dit j'ai une table dans ma BDD dans la quelle j'ai deux champs de type Time: heure début (hd) et heure fin (hf). J'aimerais donc faire la difference entre hf et hd.

    Je sais que une requete SQL pour sa, sa s'écrirait:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TIMEDIFF(`hf`,`hd`)duree FROM `oi` WHERE `noi`=1

    Chose qui ne marche pas sous SF2 car la Fonction TIMEDIFF n'est pas reconnue par doctrine!

    Cependant, j'ai ajouter un champ $duree qui doit etre renseigné automatiquement par la différence entre les deux heures ($hf et $hd) à l'envoie du formulaire d'enregistrement!

    J'ai essayer de faire ceci dans mon controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $hd = $oi->getHd();
    $hf = $oi->getHf();
    // $x= $hf-$hd;
    $x = $hf->diff($hd);
    $oi->setDuree($h);
    Mais rien ne se passe dans ma table: le champ duree reste toujours 00:00:00!!

    Comment m'y prendre SVP de l'AIDE!

  2. #2
    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
    Il est possible d’étendre Doctrine pour la prise en compte des fonctions spécifiques :
    http://www.doctrine-project.org/2010...html#date-diff
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Par défaut
    J'avais déjà regarder dans ce liens, mais j'avoue que je n'y comprends pas exactement commment implémenté cela!
    Tu pourrais me guider un peu stp?!

  4. #4
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    L'utilisation des objets DateTime et l'utilisation de la méthode diff et bien plus simple. Je pense que tu n'étais pas loin sauf que quand je reprends ton morceau de code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $hd = $oi->getHd();
    $hf = $oi->getHf();
     
    // $x = $hf->diff($hd); $x pas utilisé, et $h pas initialisé ?
     
    $h = $hf->diff($hd);
    $oi->setDuree($h);
    Quel est le type de paramètre attendu dans la méthode setDuree() ? Un entier (nb de minutes ? d'heures ? de jour ? de mois ?) ? Un DateInterval ? Du texte ?

    Selon ta réponse à ta question il faudra encore appliquer le $h->format() adéquat avec le bon paramètre dans format.
    => http://php.net/manual/fr/datetime.diff.php

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Par défaut
    Salut! Merci deja pour ta contribution! Effectivement le code exact c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $hd = $oi->getHd();
    $hf = $oi->getHf();
    $x = $hf->diff($hd);
    $oi->setDuree($x);
    Et comme tu l'a demandé
    Quel est le type de paramètre attendu dans la méthode setDuree() ? Un entier (nb de minutes ? d'heures ? de jour ? de mois ?) ? Un DateInterval ? Du texte ?
    le paramètre attendu est de type TIME(Heures, Minutes et Secondes)

    Et maintenant j'ai appliquer le $->format() comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          $hd = $oi->getHd(); 
          $hf = $oi->getHf();
     
          $h= $hd->diff($hf);
          $x = $h->format('H:i:s');
          $oi->setDuree($x);
    Je retrouve cette erreur:
    Error: Call to a member function format() on a non-object in C:\wamp\www\djago_i\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\TimeType.php line 53
    Que dois-je faire?

  6. #6
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Assure toi que $hd et $hf soient des objets DateTime.
    Assure toi que $h est bien un objet DateInterval.

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

Discussions similaires

  1. [Dates] Différence entre deux heures
    Par covin85 dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2008, 19h47
  2. Différence entre deux heures en minutes ?
    Par moi&dev dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/08/2007, 11h39
  3. problème différence entre deux heures
    Par gwenhael dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2006, 15h16
  4. Réponses: 7
    Dernier message: 05/07/2006, 16h29
  5. [Dates] Calcul d'une différence entre deux heures
    Par loreleï85 dans le forum Langage
    Réponses: 12
    Dernier message: 28/06/2006, 11h43

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