Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd z pobraniem daty typu (Dziś, Wczoraj, itp)
Forum PHP.pl > Forum > PHP
aleks365
Witam

Męczę się już trochę i nic nie zdziałałem problem w tym że nie da się pobrać daty z bazy

Tu dam kod php
  1. <?php
  2. function getMinutes($minut)
  3. {
  4. switch($minut)
  5. {
  6. case 0: return 0; break;
  7. case 1: return 1; break;
  8. case ($minut >= 2 && $minut <= 4):
  9. case ($minut >= 22 && $minut <= 24):
  10. case ($minut >= 32 && $minut <= 34):
  11. case ($minut >= 42 && $minut <= 44):
  12. case ($minut >= 52 && $minut <= 54): return "$minut minuty temu"; break;
  13. default: return "$minut minut temu"; break;
  14. }
  15. return -1;
  16. }
  17.  
  18. function getDiff($timestamp)
  19. {
  20.  
  21. // Tu jest to co nie pobiera z bazy danych
  22. $timestamp = "".$row['data']."";
  23.  
  24. $now = time();
  25.  
  26. if ($row['data'] > $now) {
  27. echo 'Podana data nie może być większa od obecnej.';
  28. return;
  29. }
  30.  
  31. $diff = $now - $timestamp;
  32.  
  33. $minut = floor($diff/60);
  34. $godzin = floor($minut/60);
  35. $dni = floor($godzin/24);
  36.  
  37. if ($minut <= 60) {
  38. $res = getMinutes($minut);
  39. switch($res)
  40. {
  41. case 0: return "Przed chwilą";
  42. case 1: return "Minutę temu";
  43. default: return $res;
  44. }
  45. }
  46.  
  47. if ($godzin > 6 && $godzin < 24) {
  48. return "Dzisiaj, ".date("H:i", $timestamp)."";
  49. }
  50. elseif ($godzin > 0 && $godzin < 24) {
  51. $restMinutes = ($minut-(60*$godzin));
  52. $res = getMinutes($restMinutes);
  53. if ($godzin == 1) {
  54. return "Godzinę temu";
  55. } else {
  56. return "$godzin godzin temu";
  57. }
  58. }
  59.  
  60. if ($godzin >= 24 && $godzin <= 48) {
  61. return "Wczoraj, ".date("H:i", $timestamp)."";
  62. }
  63.  
  64. if ($godzin >= 24 && $godzin <= 72) {
  65. return "Przedwczoraj, ".date("H:i", $timestamp)."";
  66. }
  67.  
  68. switch($dni)
  69. {
  70. case ($dni < 7):
  71. return "$dni dni temu"; break;
  72.  
  73. case 7:
  74. return "Tydzień temu"; break;
  75.  
  76. case ($dni > 7 && $dni < 14):
  77. return "Ponad tydzień temu"; break;
  78.  
  79. case 14:
  80. return "Dwa tygodznie temu"; break;
  81.  
  82. case ($dni > 14 && $dni < 21):
  83. return "Ponad dwa tygodnie temu"; break;
  84.  
  85. case ($dni > 21 && $dni < 30):
  86. return "Ponad trzy tygodnie temu"; break;
  87.  
  88. case 30: case 31:
  89. return "Miesiąc temu"; break;
  90.  
  91. case ($dni > 31):
  92. return ''.date("d.m.Y, H:i", $row['data']).''; break;
  93. }
  94. return date("d.m.Y, H:i", $row['data']);
  95. }
  96.  
  97. $wynik = getDiff($time);
  98. echo $wynik;
  99. ?>


I tam jest
  1. $timestamp = "".$row['data']."";

I nie wyświetla daty normalnie tylko tak 01.01.1970, 01:00 (Przy każdym komentarzu jest taka data u mnie na stronie)

a jak zrobię tak
  1. $timestamp = "1333488367";

To działa pięknie wyświetla że dodano dwie godziny temu to co jest z tym proszę o odpowiedz z góry dzięki smile.gif

PS: Połączenie do bazy mam osobno i jestem pewny że łączy bo jak wypisuje w echo $row['data'] to wyświetla 1333488367 (czyli datę)
d3ut3r
Po pierwsze:

  1. function getDiff($timestamp)


deklarujesz funkcje getDiff wymagasz parametru $timestamp a później robisz:

  1. $timestamp = "".$row['data']."";


czyli go nadpisujesz (pomijam fakt bezsensownego zapisu wystarczy:
  1. $timestamp = $row['data'];


Po drugie

skąd wewnątrz funkcji masz tablicę $row ? zapewne pobierasz dane na zewnątrz funkcji (trzeba poczytać o zasięgu zmiennych w PHP).

Po trzecie

funkcje wywołujesz
  1. $wynik = getDiff($time);


czyli podajesz jako parametr zmienną $time która też nie wiadomo skąd się wzięła.

Myślę że te 3 wskazówki powinny Cię naprowadzić na to jak to naprawić.
aleks365
ok Bardzo mi pomogłeś dzięki ale jest jeszcze jeden problem

Poklepałem w kodzie i działało i teraz już nie wiem co i jak proszę o pomoc i napisać co jest źle biggrin.gif

  1. <?php
  2. function getMinutes($minut)
  3. {
  4. switch($minut)
  5. {
  6. case 0: return 0; break;
  7. case 1: return 1; break;
  8. case ($minut >= 2 && $minut <= 4):
  9. case ($minut >= 22 && $minut <= 24):
  10. case ($minut >= 32 && $minut <= 34):
  11. case ($minut >= 42 && $minut <= 44):
  12. case ($minut >= 52 && $minut <= 54): return "$minut minuty temu"; break;
  13. default: return "$minut minut temu"; break;
  14. }
  15. return -1;
  16. }
  17.  
  18. function getDiff($timestamp)
  19. {
  20. $now = time();
  21.  
  22. if ($timestamp > $now) {
  23. echo 'Podana data nie moze byc wieksza od obecnej.';
  24. return;
  25. }
  26.  
  27. $diff = $now - $timestamp;
  28.  
  29. $minut = floor($diff/60);
  30. $godzin = floor($minut/60);
  31. $dni = floor($godzin/24);
  32.  
  33. if ($minut <= 60) {
  34. $res = getMinutes($minut);
  35. switch($res)
  36. {
  37. case 0: return "Przed chwila";
  38. case 1: return "Minute temu";
  39. default: return $res;
  40. }
  41. }
  42.  
  43.  
  44. if ($godzin >= 6 && $godzin <= 24) {
  45. return "Wczoraj, ".date("H:i", $timestamp)."";
  46. }
  47. elseif ($godzin > 0 && $godzin < 24) {
  48. $restMinutes = ($minut-(60*$godzin));
  49. $res = getMinutes($restMinutes);
  50. if ($godzin == 1) {
  51. return "Godzine temu";
  52. } else {
  53. return "$godzin godzin temu";
  54. }
  55. }
  56.  
  57. if ($godzin >= 24 && $godzin <= 48) {
  58. return "Wczoraj, ".date("H:i", $timestamp)."";
  59. }
  60.  
  61. if ($godzin >= 24 && $godzin <= 72) {
  62. return "Przedwczoraj, ".date("H:i", $timestamp)."";
  63. }
  64.  
  65. switch($dni)
  66. {
  67. case ($dni < 7):
  68. return "$dni dni temu"; break;
  69.  
  70. case 7:
  71. return "Tydzien temu"; break;
  72.  
  73. case ($dni > 7 && $dni < 14):
  74. return "Ponad tydzien temu"; break;
  75.  
  76. case 14:
  77. return "Dwa tygodznie temu"; break;
  78.  
  79. case ($dni > 14 && $dni < 21):
  80. return "Ponad dwa tygodnie temu"; break;
  81.  
  82. case 21:
  83. return "Trzy tygodznie temu"; break;
  84.  
  85. case ($dni > 21 && $dni < 30):
  86. return "Ponad trzy tygodnie temu"; break;
  87.  
  88. case 30: case 31:
  89. return "Miesiac temu"; break;
  90.  
  91. case ($dni > 31):
  92. return date("d.m.Y, H:i", $timestamp); break;
  93. }
  94. return date("d.m.Y, H:i", $timestamp);
  95. }
  96.  
  97. $timestamp = $row['data'];
  98. $data = getDiff($timestamp);
  99. echo $data;
  100. ?>
shark121
  1. $timestamp = "".$row['data']."";

w zmiennej $timestamp będzie string, bo użyłeś bezsensownych cudzysłowów

żeby przekazać tam wartość liczbową po prostu wywal cudzysłowy
  1. $timestamp = $row['data'];
aleks365
też o tym pomyślałem ale nadal nie wyświetla daty teraz wg nie pobiera jej z bazy sad.gif

Co zrobić questionmark.gif
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.