prob avec function diff()

Eléphant du PHP | 417 Messages

02 déc. 2011, 15:25

Bonjour

j'ai une function pour comparais entre deux date (dhailleur cé Mr moogli qui m'a aidé dans cette fonction :D )
elle marche bien en local mais pas en ligne
voici mon code
function compareDate( $date )  // function pour comparer la date pour afficher soit Aujord'hui si la date comparer = date du jour, hier si la date = date hier, sinon afficher la date même
		{
			global $ret;
			$aujourdhui = new datetime();// initialise avec la valeur de l'instant pr?sent par d?faut
			$dateAtraiter = new datetime($date);// bon faudrait v?rifier que le format soit bien yyyy-mm-dd
			$interval = $aujourdhui->diff($dateAtraiter);
			$ecart = $interval->format('%R%a');
			switch ($ecart)
			{
				case 0: $ret = 'aujourd\'hui';
					break;
				case -1: $ret = 'hier';
					break;
				default : $ret = $date; 
			}
			unset($aujourdhui);
			unset($dateAtraiter);
			return $ret;
		}
et voici l'erreur que j'ai : Fatal error: Call to undefined method DateTime::diff() in ligne ou y a l'appel de la function diff() c'est à dire $interval = $aujourdhui->diff($dateAtraiter);

c'est une question de compatibilité avec php 5? si oui quelle function peu la remplcé ? j'ai essayé date_diff() et si aussi la meme errure

Mammouth du PHP | 1967 Messages

02 déc. 2011, 16:42

Je pense qu'il faut que tu vérifie la version de PHP qu'il y a sur ton serveur avec la fonction phpinfo()
Ton serveur est probablement dans une autre version qui n'implèmente pas cette fonctionnalité
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

ViPHP
xTG
ViPHP | 7331 Messages

02 déc. 2011, 17:17

DateTime::diff() est implémenté à partir de PHP 5.3.0 (de même pour date_diff() qui est juste un alias).

Eléphant du PHP | 417 Messages

02 déc. 2011, 22:50

DateTime::diff() est implémenté à partir de PHP 5.3.0 (de même pour date_diff() qui est juste un alias).
et elle est pas remplacé par une autre?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 déc. 2011, 22:59

C'est surtout qu'elle n'existait pas avant php 5.3 et fallait se débrouiller autrement :)

Quant à la façon de faire, y en a de toute sorte, mais le plus simple consiste généralement à jeter un coup d'oeil dans la documentation de DateTime::diff. Dans les commentaires tu trouveras très certainement des suggestions de fonctions compatibles avec d'autres versions de php :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 417 Messages

02 déc. 2011, 23:41

j'ai vu ça il disent de la modifier par date_diff mais c'est toujours le même erreur

Eléphant du PHP | 83 Messages

02 déc. 2011, 23:59

et pourquoi pas mettre le serveur en PHP5.3 ; pour OVH et ça doit bien se faire chez les autres hébergeurs...

ViPHP
xTG
ViPHP | 7331 Messages

03 déc. 2011, 11:04

Et sinon si ta date passée en paramètre de ta fonction provient d'une bdd tu peux toujours le faire en SQL lors del a récupération ce calcul.

Eléphant du PHP | 417 Messages

06 déc. 2011, 14:09

Et sinon si ta date passée en paramètre de ta fonction provient d'une bdd tu peux toujours le faire en SQL lors del a récupération ce calcul.
oui la date et sélectionnée repartire d'une bdd je fait comment pour calcul en sql :/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 déc. 2011, 14:18

pour mysql => date_format ==> http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

c'est vrai qu'ils pourraient faire un effort sur les versions ^^

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 417 Messages

06 déc. 2011, 14:33

pour mysql => date_format ==> http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

c'est vrai qu'ils pourraient faire un effort sur les versions ^^

@+
^^ merci Mr moogli je vais voir ça ce soir :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 déc. 2011, 14:37

:mrgreen: :mrgreen: :mrgreen:
Il en faut peu pour être heureux ......