date diff expects parameter 1 to be datetime

Mammouth du PHP | 702 Messages

30 avr. 2012, 15:56

Bonjour à tous, j'ai ce code ci:
 <?php 
$sql = 'SELECT * FROM creance where n_doss='.$_GET['n_doss'].'';
$result = mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
?>			
                  <?php
      $user = mysql_fetch_assoc($result)
      
        ?><?php
 
if ($user['date_prescription'] > date('Y-m-d'))
{
$datetime1 = date('Y-m-d');
$datetime2 = $user['date_prescription'];
$interval = date_diff($datetime1, $datetime2);
    echo "<center>".date('d-m-Y',strtotime($user['date_prescription']))."<br>soit dans:".$interval->format('%R%a days')."</center>";
}
else // SINON
{
    echo "<center>Créance préscrite depuis le ".date('d-m-Y',strtotime($user['date_prescription']))."</center>" ;

}
 
?>
qui me renvoit l'erreur sous-jacente:
( ! ) Warning: date_diff() expects parameter 1 to be DateTime, string given in nce.php on line 429Call Stack# Time Memory Function Location1 0.0540 1029840 {main}( ) ..\creance.php:02 0.0695 1314168 date_diff ( ) ..\nce.php:429( ! ) Fatal error: Call to a member function format() on a non-object in C:\wamp\www\nce.php on line 430Call Stack# Time Memory Function Location1 0.0540 1029840 {main}( ) ..\nce.php:0

en fait j'essaie de comparer la date du jour à une autre datye, et que le tout me renvoit un nombre de jour,
il faut savoir que c'est une comparauison de deux chaines de meme format.

D'avance merci pour l'aide précieuse que vous pourrez m'apporter.

Mammouth du PHP | 702 Messages

30 avr. 2012, 16:34

j'ai déjà remplacé le premier paramètre par: new DateTime("now") mais pour le second je ne sais pas quoi mettre car j'ai mon champ mysql qui est format date... mais comme ça ne le prend pas en compte à priori, il ne rentre pas en compte dans le datetime...

ViPHP
xTG
ViPHP | 7331 Messages

30 avr. 2012, 17:14

Le DateTime dont il te parle est un objet, pas un format. ;)
http://www.php.net/manual/fr/datetime.c ... format.php

Mammouth du PHP | 702 Messages

30 avr. 2012, 17:32

ah oui c'est vrai, je faisais n'importe quoi et puis al j'ai fais cela:
$datetime1 = new DateTime("now");
$datetime2 = new DateTime($user['date_prescription'])
et ça fonctionne.

Merci :)