Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Data
Forum PHP.pl > Forum > Przedszkole
rzeżucha
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!
CTRL
Zawsze? Mi zwraca wszystko normalnie, 3 godziny, 2 godziny, 4 minuty
rzeżucha
Jako data podaje date z bazy(typ datetime) wrzucona funkcja now(). Hmm no też mi się wydawało, że to powinno działać :S
CTRL
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ę
rzeżucha
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
rzeżucha
teraz niektóre wyświetla jako -3, -2 -- na razie sie z tym poddaje
Pacio
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.
rzeżucha
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
Pacio
A jak dasz $r['DATA'] zamiast tej funkcji Kiedy() to pokazuje dobra date?
rzeżucha
-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
rzeżucha
Cytat
A jak dasz $r['DATA'] zamiast tej funkcji Kiedy() to pokazuje dobra date?

Tak wyświetla się dobra data.
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.