Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Data
-rzeżucha-
post 5.03.2012, 16:49:08
Post #1





Goście







Kod
function Kiedy($data) {
        $start = strtotime($data);
    $koniec = strtotime("now");
        $czas = $koniec - $start;
        
        
    $dzien    = 24*60*60;
    $godzina  = 60*60;
    $minuta   = 60;
        
        $kiedy = "";
    
    if(($wynik['DNI'] = intval($czas/$dzien)))
        {
      $czas %= $dzien;
          if($kiedy=="")$kiedy .= $wynik['DNI']." dni temu";
        }
    if (($wynik['GODZIN'] = intval($czas/$godzina))){
           $czas %= $godzina;
           if($kiedy=="")$kiedy .= $wynik['GODZIN']." godz. temu";
        }
        if(($wynik["MINUT"] = intval($czas/$minuta))){
           $czas %= $minuta;
           if($kiedy=="")$kiedy .= $wynik["MINUT"]." min. temu";
        }        
        if($kiedy=="")$kiedy .= $czas." s temu";
        return $kiedy;    
}

Zawsze zwraca "-4 godz. temu"

Witam, może ktoś wie co zrobiłem źle? Chciałem by zwracało np 5 min temu, 1 dzień temu itp.

Z góry dzięki za odpowiedz!
Go to the top of the page
+Quote Post
CTRL
post 5.03.2012, 17:06:18
Post #2





Grupa: Zarejestrowani
Postów: 133
Pomógł: 8
Dołączył: 23.09.2011
Skąd: Stromiec

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


Zawsze? Mi zwraca wszystko normalnie, 3 godziny, 2 godziny, 4 minuty


--------------------
Go to the top of the page
+Quote Post
-rzeżucha-
post 5.03.2012, 17:08:25
Post #3





Goście







Jako data podaje date z bazy(typ datetime) wrzucona funkcja now(). Hmm no też mi się wydawało, że to powinno działać :S
Go to the top of the page
+Quote Post
CTRL
post 5.03.2012, 17:18:34
Post #4





Grupa: Zarejestrowani
Postów: 133
Pomógł: 8
Dołączył: 23.09.2011
Skąd: Stromiec

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


datetime czyli? time() czy date('d.m.Y, H:i'); ? Przecież możesz sobie to w dowolny sposób przerabiać, podawać time() do funkcji, i usunąć konwertowanie na time. Nie wiem w czym jest błąd, jak wygląda data z bazy? I może podaj ten kod którym wyciągasz z bazy i wywołujesz funkcję


--------------------
Go to the top of the page
+Quote Post
-rzeżucha-
post 5.03.2012, 17:32:17
Post #5





Goście







tak wyswietlam(dodaje do strigu ktory jest potem wyswietlany) -
Kod
".Kiedy($r['DATA'])."

a dodaje tak ze
Kod
query(" 1, 'cos', now())

czyli data jest w formacie w bazie jako datatime yyyy-mm-dd hh:mm:ss
Go to the top of the page
+Quote Post
-rzeżucha-
post 5.03.2012, 17:38:22
Post #6





Goście







teraz niektóre wyświetla jako -3, -2 -- na razie sie z tym poddaje
Go to the top of the page
+Quote Post
Pacio
post 5.03.2012, 17:45:19
Post #7





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

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


Funkcja dziala poprawnie, wlacz obsluge bledow w PHP, bo byc moze interpretuje Twoje "now()" w parametrze query() jako funkcje. Poza tym sprawdz jakie konkretnie zapytanie idzie do bazy.


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
-rzeżucha-
post 5.03.2012, 17:52:44
Post #8





Goście







W bazie mam takie przykladowe daty:
Kod
2012-03-05 15:56:46
2012-03-05 14:58:21
2012-03-05 16:19:24

więc ok wysyła raczej, to samo z odbieraniem bo mam zapisany caly row($r) i wyswietla reszte ok :S
Go to the top of the page
+Quote Post
Pacio
post 5.03.2012, 17:55:53
Post #9





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

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


A jak dasz $r['DATA'] zamiast tej funkcji Kiedy() to pokazuje dobra date?


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
-rzeżucha-
post 5.03.2012, 17:57:06
Post #10





Goście







-4 godziny maja nowo dodane posty starsze maja -3 -2 itd. ale to i tak jest bez sensu

Aktualnie funkcja wygląda tak:
Kod
function Kiedy($data) {        
        $czas = strtotime("now") - strtotime($data);        
        
    $dzien    = 24*60*60;
    $godzina  = 60*60;
    $minuta   = 60;
        
        $kiedy = "";
        
    $wyn['DNI'] = intval($czas/$dzien);
    if($wyn['DNI'])
        {
      $czas %= $dzien;
          if($kiedy=="")$kiedy .= $wyn['DNI']." dni temu";
        }
        $wyn['GODZIN'] = intval($czas/$godzina);
    if ($wyn['GODZIN']){
           $czas %= $godzina;
           if($kiedy=="")$kiedy .= $wyn['GODZIN']." godz. temu";
        }
        $wyn['MINUT'] = intval($czas/$minuta);
        if($wyn['MINUT']){
           $czas %= $minuta;
           if($kiedy=="")$kiedy .= $wyn['MINUT']." min. temu";
        }        
        //if($kiedy=="")$kiedy .= $czas." s temu";
        return $kiedy;    
}
i też nie dziala
Go to the top of the page
+Quote Post
-rzeżucha-
post 5.03.2012, 17:58:52
Post #11





Goście







Cytat
A jak dasz $r['DATA'] zamiast tej funkcji Kiedy() to pokazuje dobra date?

Tak wyświetla się dobra data.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:00