Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]odliczanie dni, o 2 mniej
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post
B3k
post
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.01.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Lejto
post
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:17