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

PHP & Base de données Discussion :

Catchable fatal error sur comparatif de dates


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut Catchable fatal error sur comparatif de dates
    Bonjour, suite au crash d'un ordinateur linux hébergeant une application php+mysql, l'ensemble des fichiers et des bases ont été copiées sur un autre poste, tournant également sous linux.

    Une partie de l'objectif de l'appli est de comparer des dates. Pour cela j'ai une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function    take_date(DateTime $begin, DateTime $end, $type, $com = NULL, $modification=0, $status=NORMAL) {
    	$beginDate = $begin;
    	$endDate = $end;
    	if ($beginDate < $endDate) {
    		echo 'OK - Debut : '.$beginDate.' - Fin : '.$endDate;
    	} else {
    		echo 'Erreur - Debut : '.$beginDate.' - Fin : '.$endDate;
    		echo '<br />Erreur - : '.$beginDate-$endDate;
    	}
    }
    Sur l'ancien poste, dont je ne connais ni la version php ni la version mysql, tout tournait parfaitement, maintenant je ne peux plus comparer mes dates.
    Par exemple la dernière ligne $beginDate-$endDate me provoque une erreur Catchable fatal error: Object of class DateTime could not be converted to string in /var/www/class.php on line 474. Dernière ligne dans une condition qui d'ailleurs est mal interprétée puisque mon $begin est bien inférieur à mon $end.

    Une idée d'où cela peut-il venir ? Je pensais au fait que les versions php ou mysql n'était pas les mêmes...

    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut
    Bon en fait il s'agit de 2 erreurs différentes. Catchable fatal error est résolu en forçant le format de sortie, mais le DateTime n'est pas interprété.
    Comme je suis sous php 5.2, je pense que le problème vient de là, l'autre devait être une version 5.3.

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function    take_date(DateTime $begin, DateTime $end, ... etc ...) {
    	$beginDate = $begin;
    	$endDate = $end;
    	if ($beginDate < $endDate) {
    		... etc ...
    	}
    }
    Hormis le soucis de version, il y a à mon sens un souci.
    $beginDate et $endDate doivent être des Objets Datetime vu que ceci est déclaré/typé dans la fonction.
    Mais faire directement une comparaison comme $beginDate < $endDate à mon avis ça ne peut pas fonctionner, il y a de forte chance que Php tentera de "caster" ces 2 Objets afin de pourvoir faire la comparaison.

    Il faudrait que ce soit des valeurs, comme un timestamp par exemple, non ?

    J'aurais plus vu quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ($beginDate->format('U') < $endDate->format('U')) {
        ... etc ...
    }
    else {
        ... etc ...
    }
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. [PEAR][File_dicom] Catchable fatal error?
    Par Eruvatar dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 27/02/2010, 13h28
  2. Catchable fatal error
    Par Tchupa dans le forum Langage
    Réponses: 2
    Dernier message: 17/03/2009, 09h24
  3. soucis Catchable fatal error: Object of class stdClass
    Par nimbus_77 dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2008, 09h45
  4. [Oracle] Catchable fatal error: (suite à une mise à jour en PHP 5.2)
    Par nyto-86 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/06/2008, 11h53

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