![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 20.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Siema
Kolejny moj topic z seri jestem n00bem i zadaje glupie pytania (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) Zazna od początku: Napisalem proste forum i chcialbym wprowadzic edycje postow w zaleznosci od daty ich umieszczenia. W bazie danych mam pole `data` VARCHAR(19) a data ma postac RRRR:MM:DD GG:MM:SS Potrzebuje wiedziec jaka roznica czasu jest pomiedzy opublikowaniem posta a data obecna. Ktos ma jakies propozycje? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Chcesz to robić w PHP czy na poziomie zapytania do bazy?
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
na początek... popraw strukturę bazy danych i zmień pole data na typ DATETIME...
potem poszukaj w manualu MySQL opisu funkcji DATEDIFF(...) i już będzie z górki ... powodzenia. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 20.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Znalalem tam taki oto przyklad. Tylko nie wiem zabardzo co mam wsadzic w miejsce zmiennych: DATEDIFF(expr1,expr2) To jest moj pomysl:
Czy jest to poprawne? Ten post edytował IMP 22.05.2008, 12:55:26 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Kod function data2minelo(data){ //stworz obiekty na date pobrana i aktualna var teraz = new Date(); var wydarzenie = new Date(); try{ //dzieli na tablice YYYY-MM-DD i HH:MM:SS var dataiczas = data.split(' '); //rodziel date na date i czas var t_data = dataiczas[0].split('-'); var t_czas = dataiczas[1].split(':'); //ustaw date i czas wydarzenia wydarzenie.setFullYear(t_data[0]); wydarzenie.setMonth(t_data[1] - 1); wydarzenie.setDate(t_data[2]); wydarzenie.setHours(t_czas[0]); wydarzenie.setMinutes(t_czas[1]); wydarzenie.setSeconds(t_czas[2]); } catch(e){ return; } //oblicz roznice w czasach pomiedzy teraz a wprowadzona data var roznica = (teraz.getTime() - wydarzenie.getTime()) / 1000; //zapisuje ile minelo czasu //jednostki w sekundach var minuta = 60; var godzina = 60 * 60; var dzien = 60 * 60 * 24; //oblicza ile minelo dni, godzin, minut, sekund var m_dni = Math.floor(roznica/dzien); var m_godzin = Math.floor((roznica-m_dni*dzien)/godzina); var m_minut = Math.floor((roznica-m_dni*dzien-m_godzin*godzina)/minuta); var m_sekund = Math.floor((roznica-m_dni*dzien-m_godzin*godzina-m_minut*minuta)); //jezeli wynik byl nie dawniej niz 3 dni i nie wczesniej niz 1 if(m_dni > 1 && m_dni <= 3){ return m_dni + 'dni temu'; } //jezeli to bylo dzisiaj else if(m_dni === 0){ //jezeli jeszcze nie minela godzina if(m_godzin === 0){ if(m_minut === 0){ return m_sekund + 's temu'; } else{ return m_minut + 'm ' + m_sekund + 's temu'; } } else{ return m_godzin + 'h ' + m_minut + 'm temu'; } } return t_data[2] + '.' + t_data[1] + '.' + t_data[0] + ' ' + t_czas[0] + ':' + t_czas[1]; } Ja stosuje JS do takich spraw. Spróbuj i ty! |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
JS? To raczej nie jest dobry pomysł. Nie każdy ma JS włączony.
Można stosować JS przy walidacji formularzy (ale i tak trzeba później sprawdzić po stronie serwera), ale tutaj niezbyt. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 19:32 |