Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]odliczanie dni
Forum PHP.pl > Forum > PHP
Lejto
Mam taki kod:
  1. <?php
  2. class wycieczki{
  3.  
  4. function odliczanie($dzien, $miech)
  5. {
  6. if(date('m') <= $miech)
  7. {
  8. if(date('m')==$miech)
  9. {
  10. if(date('d') < $dzien)
  11. {
  12. $year = date('Y');
  13. }
  14. else{ $year = date('Y')+1; }
  15. }
  16. else{ $year = date('Y'); }
  17. }
  18. else
  19. {
  20. $year = date('Y')+1;
  21. }
  22. $date = mktime(0,0,0,$miech,$dzien,$year);
  23. $date1 = mktime();
  24. $test2 = $date - $date1;
  25. $test = $test2 / 86400;
  26. if($test < 1)
  27. {
  28. $hours = $test2 / 3600;
  29. $wyn = explode('.', $hours);
  30. echo "za ".$wyn[0]; echo ($wyn[0]<=4)" godziny" : " godzin";
  31. }
  32. else{
  33. $test1 = explode('.', $test);
  34. echo "za ".$test1[0]; echo ($test1[0]==1)" dzień" : " dni";
  35. }
  36. }
  37. }
  38.  
  39. $b = new wycieczki();
  40. $sql = "SELECT * FROM urodziny";
  41. $query = mysql_query($sql);
  42. $rows = mysql_num_rows($query);
  43. $row = mysql_fetch_array($query);
  44.  
  45.  
  46.  
  47. $urodziny = explode('.', $row[urodziny]);
  48. echo'<td class=ucz> '.$row[urodziny].'(';
  49. if($row[urodziny]!=""){ $b->odliczanie($urodziny[0],$urodziny[1]); } else { echo "XXX"; } echo')</td>';
  50. ?>


Wszystko dobrze liczy tylko opóźnia o 2 dni np. data 14.12 a policzy za 20 dni a powinno być za 22 dni.
W czym tkwi problem?
B3k
skorzystaj z tej funkcji:

  1. <?php
  2. function duration($timestamp) {
  3. $years=floor($timestamp / (60*60*24*365));
  4. $timestamp%=60*60*24*365;
  5. $weeks=floor($timestamp / (60*60*24*7));
  6. $timestamp%=60*60*24*7;
  7. $days=floor($timestamp / (60*60*24));
  8. $timestamp%=60*60*24;
  9. $hrs=floor($timestamp / (60*60));
  10. $timestamp%=60*60;
  11. $mins=floor($timestamp / 60);
  12. $secs=$timestamp % 60;
  13. $str="";
  14. if ($years >= 1) { $str.="{$years} lat "; }
  15. if ($weeks >= 1) { $str.="{$weeks} tygodni "; }
  16. if ($days >= 1) { $str.="{$days} dni "; }
  17. if ($hrs >= 1) { $str.="{$hrs} godzin "; }
  18. if ($mins >= 1) { $str.="{$mins} minut "; }
  19. if ($secs >= 1) { $str.="{$secs} sekund "; }
  20. return $str;
  21. }
  22.  
  23.  
  24. $data_urodzin = timestamp;
  25. $aktualna_data = time();
  26. $duration = ($data_urodzin-$aktualna_data);
  27. $za_ile = duration($duration);
  28.  
  29. print($za_ile);
  30. ?>

Operacje na datach najwygodniej robi sie w formie timestamp'ow

Pozdarwiam
Lejto
robie tak:

  1. <?php
  2. function duration($timestamp) {
  3. $years=floor($timestamp / (60*60*24*365));
  4. $timestamp%=60*60*24*365;
  5. $weeks=floor($timestamp / (60*60*24*7));
  6. $timestamp%=60*60*24*7;
  7. $days=floor($timestamp / (60*60*24));
  8. $timestamp%=60*60*24;
  9. $hrs=floor($timestamp / (60*60));
  10. $timestamp%=60*60;
  11. $mins=floor($timestamp / 60);
  12. $secs=$timestamp % 60;
  13. $str="";
  14. if ($years >= 1) { $str.="{$years} lat "; }
  15. if ($weeks >= 1) { $str.="{$weeks} tygodni "; }
  16. if ($days >= 1) { $str.="{$days} dni "; }
  17. if ($hrs >= 1) { $str.="{$hrs} godzin "; }
  18. if ($mins >= 1) { $str.="{$mins} minut "; }
  19. if ($secs >= 1) { $str.="{$secs} sekund "; }
  20. return $str;
  21. }
  22.  
  23.  
  24.  
  25. $sql = "SELECT * FROM wycieczki";
  26. $query = mysql_query($sql);
  27. $rows = mysql_num_rows($query);
  28. $row = mysql_fetch_array($query);
  29.  
  30. $data = timestamp; //zamieniałem to na $row[data]
  31. $aktualna_data = time();
  32. $duration = ($data-$aktualna_data);
  33. $za_ile = duration($duration);
  34.  
  35. print($za_ile);
  36. ?>


i nie działa
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.