Comparaison entre deux dates ?

Comparaison entre deux dates ? - PHP - Programmation

Marsh Posté le 17-02-2003 à 10:47:21    

salut!:)
comment faire pour comparer deux dates ?
mes deux dates : la premiere stocker sur db et l'autre la date d'aujourd'hui
je voudrais mettre un truc genre :
<?
if($date1 est entre date2 et + l'infi)
 
echo "$date1";
}
else
echo '';
}
?>
 
Quel est le bon code s'il existe ?
merci 'avance

Reply

Marsh Posté le 17-02-2003 à 10:47:21   

Reply

Marsh Posté le 17-02-2003 à 10:50:05    

coconutes4 a écrit :

salut!:)
comment faire pour comparer deux dates ?
mes deux dates : la premiere stocker sur db et l'autre la date d'aujourd'hui
je voudrais mettre un truc genre :
<?
if($date1 est entre date2 et + l'infi)
 
echo "$date1";
}
else
echo '';
}
?>
 
Quel est le bon code s'il existe ?
merci 'avance


 
ben tu fais une comparaison lexicographique de tes dates sous la forme ssaa-mm-jj et c gagné !
 
la fction php :
&tadate = Date(Y-m-d) ;
un truc comme ca
 
ya le manuel php pour plus de détail

Reply

Marsh Posté le 17-02-2003 à 10:52:44    

je ne veut pas quelles soit égales mais soit comprise entre - l'infini et date soit entre date et + infini....

Reply

Marsh Posté le 17-02-2003 à 11:15:33    

coconutes4 a écrit :

je ne veut pas quelles soit égales mais soit comprise entre - l'infini et date soit entre date et + infini....


 
je pige pas  :heink:  
 
si t'as date du jour est 2003-02-17
 
tu peux comparer avec une autre avec les opérateurs <, >, <=, >=
Supérieur et Inférieur à qq chose, c l'infini inclu non ?
 
excuse mais je ne vois pas

Reply

Marsh Posté le 17-02-2003 à 16:42:42    

ben en fait
la date du jour est 10/02/2003
si jamais la date se trouve "avant" exemple : 09/02/2003 on n'affiche pas mais si la date
est 11/02:2003 ON AFFICHE
vous m'avez compris ?:(

Reply

Marsh Posté le 17-02-2003 à 17:13:29    

date > datedujour
date < datedujour
 
date et datedujour etant au format YYYYMMDD ou YYYYMMDDhhmmss ou plus precis encore ...
 

Reply

Marsh Posté le 18-02-2003 à 11:59:28    

Code :
  1. <?
  2. $sql = "SELECT * FROM planning order by titre ";
  3. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  4. while($data = mysql_fetch_array($req))
  5. $date    = date("Y/m/d H:i" );
  6.    {
  7. echo '<tr>
  8.             <td width="27%">
  9.               <font face="Arial" size="2"> <b>'.$data['titre'].'</b></font>
  10.             </td>
  11.               </a>
  12.             <td width="19%">
  13.               <font face="Arial" size="1">';
  14. if ('.$data['japon'].'<$date)
  15. {
  16. echo 'vieux';
  17. }
  18. else
  19. {
  20. echo ''.$data['japon'].'';
  21. }
  22. echo'
  23. </font>
  24. ';
  25. ?>


 
ça me met une erreurpour la ligne if(data etc ...
 
qq peut m'aider ?

Reply

Marsh Posté le 18-02-2003 à 12:13:04    

coconutes4 a écrit :

Code :
  1. if ('.$data['japon'].'<$date)
  2. {
  3. echo 'vieux';
  4. }
  5. else
  6. {
  7. echo ''.$data['japon'].'';
  8. ?>


 
ça me met une erreurpour la ligne if(data etc ...
 
qq peut m'aider ?


 
 :heink: Ba forcément, tu mets des ' partout et qui ne servent à rien. ' est un délimiteur de chaîne de caractère, donc tu peux écrire : echo 'coucou';
Mais si tu veux balancer des variables et tout, fais plutôt : echo $data['japon']; (pas besoin de ';)
Dans ton code :

Code :
  1. echo $data['japon'];


Quant au if, la ligne est effectivement complètement erronée à cause du même problème, écris plutôt :

Code :
  1. if ($data['japon']<$date)


 
Vala. Evite au maximum de faire ce genre de trucs (je parle du '.$data['japon'].' qui ne veut rien dire), ça marchera rarement et si c'est le cas, c'est un nid à bugs. Et en plus ça rend le code illisible.

Reply

Marsh Posté le 18-02-2003 à 13:54:19    

t'as le choix ?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-désolé

Reply

Marsh Posté le 18-02-2003 à 14:46:18    

coconutes4 a écrit :

ben en fait
la date du jour est 10/02/2003
si jamais la date se trouve "avant" exemple : 09/02/2003 on n'affiche pas mais si la date
est 11/02:2003 ON AFFICHE
vous m'avez compris ?:(


 
Comme je te l'ai dis, le mieux pour traiter une date c l'ordre :
yyyymmjj
si tu as une base avec des dates à la française (jjmmaaaa) je te conseille de changer !
Il est facile de changer de yyyymmjj en jjmmaaaa avec un petit script pour l'affichage. Mais la pour tester la taille d'une date c l'enfer !
 
Mais comme tu veux :)
 
a+

Reply

Marsh Posté le 18-02-2003 à 14:46:18   

Reply

Marsh Posté le 18-02-2003 à 16:53:34    

merci je vais essayer

Reply

Marsh Posté le 18-02-2003 à 16:58:46    

Code :
  1. <?
  2. echo '<img border="0" src="diz/planning.jpg" width="453" height="20"><br><br>';
  3. echo '<div align="center"><table border="0" bordercolor="#000000" width="402" cellspacing="0" cellpadding="0" height="25">
  4.   <tr>
  5.     <td width="100%" bordercolor="#000000" bgcolor="#ffffff" height="25">
  6.       <center>
  7.         <table border="1" bordercolor="#000000" width="100%" cellspacing="0" cellpadding="2">
  8.           <tr>
  9.            <td width="27%">
  10.               <font face="Arial" size="1"></font>
  11.             </td>
  12.             <td width="19%">
  13.               <font face="Arial" size="1"><img src="http://www.football365.fr/mediastore/foot/images/pays/drapeau_japon.gif" >
  14.             </td>
  15.             <td width="25%">
  16.               <font face="Arial" size="1"><img src="http://users.pandora.be/vaccine.damage.prevention/USA.gif" width="52" height="36"></font>
  17.             </td>
  18.             <td width="29%">
  19.               <font face="Arial" size="1"><img src="http://www.mitanoo.com/Francefl.jpg" width="52" height="36"><font>
  20.       </font>
  21.             </td>
  22.           </tr>
  23.          
  24. ';
  25. $sql = "SELECT * FROM planning order by titre ";
  26. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  27. while($data = mysql_fetch_array($req))
  28. $date    = date("Y/m/d H:i" );
  29.    {
  30. echo '<tr>
  31.             <td width="27%">
  32.               <font face="Arial" size="2"> <b>'.$data['titre'].'</b></font>
  33.             </td>
  34.               </a>
  35.             <td width="19%">
  36.               <font face="Arial" size="1">';
  37. if ($data['japon']<$date)
  38. {
  39. echo 'vieux';
  40. }
  41. else
  42. {
  43. echo $data['japon'];
  44. }
  45. echo'
  46. </font>
  47.             <td width="25%">
  48.               <font face="Arial" size="1"> '.$data['usa'].'</font>
  49.             <td width="29%">
  50.               <font face="Arial" size="1"> '.$data['france'].'</font>
  51. </tr>
  52. ';
  53. }
  54. echo '
  55.   </tr>
  56.         </table>
  57.   </center>
  58.       <table border="0" width="100%" cellspacing="0" cellpadding="2" height="26">
  59.               </table>
  60.     </td>
  61.     </tr>
  62.   </table>
  63. </div>
  64. </body>
  65. </html>
  66. ';
  67. ?>


 
ca ne marche pas je désespére

Reply

Marsh Posté le 18-02-2003 à 21:56:18    

bah pourtant c pas sorcier meme si ton format de date est pas top :

Code :
  1. <?php 
  2. //phpinfo();
  3. $dateA = date("Y/m/d H:i" );
  4. $dateB = "2003/02/18 21:58";
  5. echo $dateA." A <br>";
  6. echo $dateB." B <br>";
  7. if ($dateA > $dateB)
  8. echo "A>B";
  9. else
  10. echo "A<B";   
  11. ?>


 
t sur que la date est dans le champ japon


Message édité par beleg le 18-02-2003 à 21:57:31
Reply

Marsh Posté le 19-02-2003 à 18:38:52    

oui oui mais de toute maniére ca m'affiche bien "vieux" : donc date dépassé mais le seul probléme est que ca n'affiche rien d'autre ^^
me^me pas les titres ...

Code :
  1. $sql = "SELECT * FROM planning order by titre "; 
  2. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
  3. while($data = mysql_fetch_array($req)) 
  4. $date    = date("Y/m/d H:i" );
  5.   { 
  6. echo '<tr>
  7.            <td width="27%">
  8.              <font face="Arial" size="2"> <b>'.$data['titre'].'</b></font>
  9.            </td>

Reply

Marsh Posté le 19-02-2003 à 18:46:01    

nraynaud a écrit :

t'as le choix ?


Tant que c'est pas une date fétiche ...
[:dehors2]
 

Reply

Marsh Posté le 19-02-2003 à 18:52:14    

svp ...

Reply

Marsh Posté le 19-02-2003 à 22:46:14    


 
Ton while boucle sur une seule ligne ... tas oublié les accolades.  
 
Taurais du afficher $data pr voir quil etait vide.

Reply

Marsh Posté le 20-02-2003 à 10:56:39    

Code :
  1. $sql = "SELECT * FROM planning order by titre "; 
  2.   $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
  3.   while($data = mysql_fetch_array($req)) 
  4.   $date    = date("Y/m/d H:i" ); 
  5.     {


elle y est l'accolade ...

Reply

Marsh Posté le 20-02-2003 à 11:00:54    


il faut pas les mettre nimporte ou les accolades  :o  
generalement ... on fait plutot
 
while ()
{
 
 
}  :sarcastic:  

Reply

Marsh Posté le 20-02-2003 à 13:46:09    

ha il faut que je mette le $date a l'intereieur de l'accolade ?

Reply

Marsh Posté le 20-02-2003 à 14:02:47    

euh ... la base de la prog ... ca te dit ...
 
les boucles les conditions ...
 
pkoi mettre une instruction  qui fait toujours la meme chose ds une boucle alors que la vairiable ne changera pas ...
 
$date = ....
while (mysql_fetch ..)
{
if $date >  
 
 
}

Reply

Marsh Posté le 20-02-2003 à 16:46:32    

oki merci :pfff:  :pfff:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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