[PHP] Soutraction date

Soutraction date [PHP] - PHP - Programmation

Marsh Posté le 27-03-2007 à 14:30:37    

Bonjour,
 
J'ai un champ 'dateXX' varchar pour une date (je sais, ce n'est pas bien :) ) qui est rempli par un formulaire de la façon jj-mm-aaaa, la base est bien rempli.
 
J'aimerais soustraire ce champ à la date du jour, voici mon bout de code :
 

Code :
  1. $days = date("d-m-Y" ) - $data['dateXX'];


 
Le problème, c'est qu'il me fait bien la soustraction, mais il ne prend pas en compte le mois et l'année, c'est à dire qu'il me fait  bien dans un mois le 27 moins le 19 = 8, mais si je rentre le 19 du mois de février il me donne 8 aussi comme résultat :lol:  
 
Cela ne doit pas être grand chose, mais je cherche en vain :(  
 
Merci de me filer un coup de main ;)


---------------
Feedback ==>  http://forum.hardware.fr/transacti [...] ser=178709
Reply

Marsh Posté le 27-03-2007 à 14:30:37   

Reply

Marsh Posté le 27-03-2007 à 14:34:54    

sur le net, tu n'as rien trouvé pour convertir une stringf en date en php ???

Reply

Marsh Posté le 27-03-2007 à 15:27:12    

nemohp a écrit :

sur le net, tu n'as rien trouvé pour convertir une stringf en date en php ???


 
Bien non, je pensais que le format était bon, et qu'il ne devait pas manquer grd chose, il serait possible que tu m'indiques la marche à suivre pour faire une bonne soustraction ?  :)  
 
Merci


---------------
Feedback ==>  http://forum.hardware.fr/transacti [...] ser=178709
Reply

Marsh Posté le 27-03-2007 à 15:49:17    

regarde du coté des mktime(), explode(), et des timestamp Unix....

Code :
  1. $DateXX=List(explode (dateXXX, "-" ));
  2. $timestXX=Mktime(             );
  3. $timeactu=time();
  4. $dif1=$timestXX-$timeactu;
  5. $dif=date("D-M-Y", $dif1);


c'est une piste, ya peut être plus simple et rapide ?

Reply

Marsh Posté le 27-03-2007 à 15:55:08    

malheureusement, les dates en php ce n'est jamais ni simple ni rapide...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-03-2007 à 21:15:37    

date('d-m-Y', time() - strtotime($data['dateXX']));


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 28-03-2007 à 14:16:07    

Cela me retourne :
 

Citation :

Warning: unexpected error in date() in c:\program filexxxxxxxxxxxxxxxxxxxonnees.php on line 309
 
01-08-1970  


Message édité par athome le 28-03-2007 à 14:20:38

---------------
Feedback ==>  http://forum.hardware.fr/transacti [...] ser=178709
Reply

Marsh Posté le 28-03-2007 à 14:37:09    

qu'est ce qui te retourne ça ? la ligne de sielfried ?
 
essaye de décomposer un peu

Reply

Marsh Posté le 28-03-2007 à 14:39:00    

Y a quoi dans $data['dateXX'] ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 28-03-2007 à 14:48:46    

Voici un peu plus de renseignements :
 
--------------------------
   dateXX     | nbrejour     |
--------------------------
27-03-2007 |Warning: unexpected error in date() in c:\program filexxxxxxxxxxxxxxxxxxxonnees.php on line 309 |
01-03-2007 |01-08-1970  |
--------------------------
 
 

Code :
  1. <?PHP
  2. $db = mysql_connect('xxxx', 'xxxx', 'xxxx');
  3. mysql_select_db('xxxx',$db);
  4. $sql = 'SELECT * FROM xxxx order by xxxx';
  5. $req = mysql_query($sql) or die('Erreur SQL !
  6. '.$sql.'
  7. '.mysql_error());
  8. while($data = mysql_fetch_array($req))
  9. {
  10. $days = date('d-m-Y', time() - strtotime($data['dateXX']));
  11.   if ($data['destructionle'] != 0000-00-00)  {
  12.       echo "<table><td class='alex'>Détruit</td></table>";
  13.       }
  14.   else if  ($days > 30) {
  15.       echo "<table><td class='alexred'>$days</td></table>";
  16.       }
  17.   else {
  18.       echo "<table><td class='alex'>$days</td></table>";
  19.       }
  20.   }
  21. mysql_close();
  22. ?>


 
 
dateXX est rentré dans mysql tel quel dans un champ varchar


Message édité par athome le 28-03-2007 à 14:51:48

---------------
Feedback ==>  http://forum.hardware.fr/transacti [...] ser=178709
Reply

Marsh Posté le 28-03-2007 à 14:48:46   

Reply

Marsh Posté le 28-03-2007 à 15:45:58    

En fait j'avais pas pigé que tu voulais le nombre de jours.
 
Essaie quelque chose du genre (time() - strtotime($data['dateXX'])) / 86400 dans ce cas.


Message édité par sielfried le 28-03-2007 à 15:46:04

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 28-03-2007 à 15:59:29    

avec :
 

Code :
  1. $days = (time() - strtotime($data['dateXX'])) / 86400;


 
Il n'y a plus d'erreur mais la réponse me parait plus que bizarre
 
---------------------------------
   dateXX     |          nbrejour     |
---------------------------------
27-03-2007 |-9283.3338657407  |
01-03-2007 |  212.66613425926 |
---------------------------------
 
 
 


---------------
Feedback ==>  http://forum.hardware.fr/transacti [...] ser=178709
Reply

Marsh Posté le 28-03-2007 à 16:02:53    

je tendrais à dire qu'il interpréte mal ta dateXX... par exemple qu'il le prend  au format anglais, à savoir le mois -le jour-l'année...... d'ou la permutation que je t'avais proposée :D

 

EDIT : fais voir un date ('d-m-Y',strtotime($data['dateXX']))


Message édité par chani_t le 28-03-2007 à 16:04:07
Reply

Marsh Posté le 28-03-2007 à 16:26:48    

Code :
  1. $days = ('d-m-Y',strtotime($data['dateXX']));


 
 
donne
 
 

Citation :

Parse error: parse error, unexpected ',' in c:\program fxxxxxxxxxxxxxxxxxxxxxxxxxxxxnnees.php on line 309



---------------
Feedback ==>  http://forum.hardware.fr/transacti [...] ser=178709
Reply

Marsh Posté le 28-03-2007 à 17:19:10    

Code :
  1. echo date ('d-m-Y',strtotime($data['dateXX']));

;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed