Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
 
Start new topic
Odpowiedzi
Michael2318
post
Post #2





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

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 17:13