Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] JDuration et JDateTime

Posted by bdecaslou on 05/09/2013 12:46

Bonjour à Tous,

J'ai encore un petit souci. Je récupère dans un JForm des données et je souhaite ensuite les modifier afin de pouvoir les enregistrer dans la DAO. Seulement le code ci-dessous ne donne rien. J'ai l'impression que $dt et $dt2 ne récupèrent pas les variables de DateHourStart et DateHourEnd. Si jamais vous voyez ce qui posent soucis merci de m'indiquer comment changer la valeur.

 
<?php
function completerExp2(){
   $rep = $this->getResponse('html');
   $experiment = jDao::createRecord('ProjetWeb~experiment');     
   $experiment-> idUser =$this->param('idUser');
   $experiment-> DateHourStart =$this->param('DateHourStart');
   $experiment-> DateHourEnd =$this->param('DateHourEnd');
   $experiment-> latitude =$this->param('latitude');
   $experiment-> longitude =$this->param('longitude'); 
   $experiment-> FrequencyCheck =$this->param('FrequencyCheck');
   $experiment-> NumberOfEggs =$this->param('NumberOfEggs');
   $experiment-> NumberOfFlyes =$this->param('NumberOfFlyes');  
   $experiment-> season =$this->param('season'); 
   $experiment-> environment =$this->param('environment'); 
   $dt=new jDateTime();
   $dt2=new jDateTime();
   $dt->setFromString($this->param('DateHourStart'),jDateTime::DB_DFORMAT);
   $dt2->setFromString($this->param('DateHourEnd'),jDateTime::DB_DFORMAT);
        $freq = $this->param('FrequencyCheck');
        if ($freq==1) {
        $dt3 = new jDuration(array("hour"=>00,"minute"=>30));
                      }
        else if ($freq==2){
        $dt3 = new jDuration(array("hour"=>01,"minute"=>00));
                           }
        else if (freq==4) {
        $dt3 = new jDuration(array("hour"=>02,"minute"=>00));
                          }
        else {
        $dt3 = new jDuration(array("hour"=>12,"minute"=>00));
             } 
   $dt2->sub($dt3);
   $dt4 = $dt->durationTo($dt2);;
   $duration=new jDateTime();
   $duration->add($dt4);
   $duration->toString(jDateTime::DB_DTFORMAT);
   $experiment-> duration=$duration;
   $dao = jDao::get('ProjetWeb~experiment');
   $dao->insert($experiment);
}
>

  [Opened] JDuration et JDateTime

Reply #1 Posted by bdecaslou on 05/09/2013 12:50

La valeur de duration dans la bdd reste toujours de 00-00-0000 00:00:00

  [Opened] JDuration et JDateTime

Reply #2 Posted by laurentj on 05/09/2013 18:53

Bonjour,

les dates reçus sont-elles bien au format indiqué jDateTime::DB_DFORMAT ? Ce serait une chose à vérifier...

  [Opened] JDuration et JDateTime

Reply #3 Posted by bdecaslou on 05/10/2013 10:58

Comment savoir le format dans lequel elles sont recus?

Ca peut effectivement etre le problème. J'utilise ca dans le formulaire

input ref="DateHourStart" type="datetime" defaultvalue="now">
   <label for="DateHourStart" > Date and Hour of the experiment's beginning </label>
   </input> 

  [Opened] JDuration et JDateTime

Reply #4 Posted by bdecaslou on 05/10/2013 11:42

Après avoir regard" mon format est le suivant "jDateTime::DB_DTFORMAT" dans la base de données et dans mon formulaire. J'arrive à insérer directement une valeur mais pas de variable (cf le code ci-joint) Merci de m'indiquer mes erreurs.

$duration=new jDateTime();
        $duration->setFromString("0000-00-01",jDateTime::DB_DFORMAT);
        $duration->toString(jDateTime::DB_DTFORMAT);
        $experiment-> duration="0000-00-01 00:00:05";
        $experiment-> effectiveduration=$duration;
        $dao = jDao::get('ProjetWeb~experiment');
        $dao->insert($experiment);

  [Opened] JDuration et JDateTime

Reply #5 Posted by laurentj on 05/13/2013 17:31

Le résultat de ton toString n'est mis null part...


$experiment-> effectiveduration = $duration->toString(jDateTime::DB_DTFORMAT);

Note: pour calculer des durées, il faut utiliser jDuration, et non pas jDateTime.

 
Page
  1. JDuration et JDateTime