Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Wyświetlanie daty
--Początkujący--
post
Post #1





Goście







Wyświetlam wiadomości z bazy - działa świetnie.

  1. while($arr = $query->fetch_assoc()){
  2. echo date('H:i', $arr['time']).' '.$arr['autor'].': '.$arr['msg'];
  3. }


W bazie mam kolumne time i tam trzymam czas napisania wiadomosci jako unix timestamp.
Chciałbym teraz zrobić takie rozdzielenie co dzień, nie potrafie się za to zabrać.
Nie potrafie tego do konca wytłumaczyć, więc przykład jak to by miało wyglądać.

  1. Poniedziałek 22/08
  2. 22:22 Ktoś: coś..
  3. 22:22 Ktoś: coś..
  4. 22:22 Ktoś: coś..
  5. 22:22 Ktoś: coś..
  6. 22:22 Ktoś: coś..
  7. Niedziela 21/08
  8. 11:11 Ktoś: coś..
  9. 11:11 Ktoś: coś..
  10. 11:11 Ktoś: coś..
  11. 11:11 Ktoś: coś..
  12. 11:11 Ktoś: coś..


Jak to zrobić? Jakieś porady?
Go to the top of the page
+Quote Post
timon27
post
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Ja bym to zrobił w php (wiele zapytań mysql).

Najpierw 'główne' zapytanie:

  1. SELECT from_unixtime(unix,'%Y-%m-%d') AS day FROM tabela GROUP BY day ORDER BY day DESC LIMIT 10


A potem w pętli php będę pobierał zmienną $day i wrzucał ją w małe zapytania:

  1. SELECT * FROM tabela WHERE from_unixtime(unix,'%Y-%m-%d')=$day


Ten post edytował timon27 4.03.2014, 18:49:28
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@timon, przepraszam, nie gniewaj sie, ale co ty wygadujesz?
Ma byc jedno zapytanie jak jest teraz, i tylko w php albo wyswietlasz dany dzien jak jeszcze nie bylo, albo tylko godzine gdy juz dzien byl.... to jest prosty warunek IF


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Michael2318
post
Post #4





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Ma to wyglądać mniej więcej nastepująco:

masz tabelkę, nazwijmy ją ex_table, a w niej pola: id_field oraz time_field, gdzie pierwsze pole to unikalne ID danego rekordu, a drugie pole to po prostu nasz czas.

Teraz wyciągamy wszystkie nasze rekordy, sortując je od najnowszych do najstarszych:

  1. $sql = "SELECT * FROM `ex_table` ORDER BY time_field DESC";
  2. $day = ''; // Ta zmienna będzie rozpoznawała czy obecny rekord to już następny dzień, czy może ten sam
  3. $result = mysql_query($sql);
  4. while($row = mysql_fetch_assoc($result))
  5. {
  6. $now_day = date("z", $row['time_field']); // do tej zmiennej przypisujemy aktualny dzien roku 0-365 - to sie przyda do identyfikacji czy mamy do czynienia z tym samym dniem czy juz z nastepnym
  7. if ( $day !== $now_day ) // jesli mamy do czynienia z kolejnym dniem to...
  8. {
  9. $day = $now_day; // przypisujemy do zmiennej $day kolejny dzien roku
  10. echo date("l j/m", $row['time_field']).'<br>'date("H:i", $row['time_field']).'cos cos cos<br>'; // wyswietlamy pełną ang. nazwę tygodnia, miesiąc i dzień, a następnie godzinę i minutę + czynność o nazwie "cos cos cos"
  11. }
  12. else // jesli natomiast mamy do czynienia z tym samym dniem...
  13. {
  14. echo date("H:i", $row['time_field']).'cos cos cos<br>'; // wsywietlamy samą czynność
  15. }
  16. }


W komentarzach wszystko opisałem, jedyny mankament to to, że dni będą w języku angielskim. Możesz sobie napisać jakąś funkcję, która na sztywno zamieni w ciągu np. Monday na Poniedziałek itp.

Ten post edytował Michael2318 4.03.2014, 19:30:56
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 - 05:45