Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nieprawidłowe sortowanie daty
Forum PHP.pl > Forum > Bazy danych > MySQL
limak
witam... robie skrypt blogowy i mam taki problem.... otóż z lewej strony mają byc linki które pokazują archiwum notkek tj. np.
Kod
lipiec 2004
czerwiec 2004
maj 2004
/****/
listopad 2003
pażdziernik 2003

^ i tak dalej....

mam w bazie table o takich polach:
Kod
ID (int (auto)) | DATA (datetime) | TYTUL (var100) | TRESC (text)


podam teraz fragment uproszczonego kodu:

  1. <?php
  2.  
  3. $m=array('1' => 'Styczeń',
  4.     '2' => 'Luty',
  5.     '3' => 'Marzec',
  6.     '4' => 'Kwiecień',
  7.     '5' => 'Maj',
  8.     '6' => 'Czerwiec',
  9.     '7' => 'Lipiec',
  10.     '8' => 'Sierpień',
  11.     '9' => 'Wrzesień',
  12.     '10' => 'Październik',
  13.     '11' => 'Listopad',
  14.     '12' => 'Grudzień');
  15.  
  16. $baza=@mysql_connect($DB_HOST,$DB_USER,$DB_PASSWD); // z tymi zmiennymi jest includowany plik
  17.     if ($baza) {
  18.       mysql_select_db($DB_NAME,$baza);
  19.     $zapytanie=&#092;"SELECT DISTINCT DATE_FORMAT(data,'%c.%Y') AS data FROM blog_notki ORDER BY data DESC\";
  20.     $result=mysql_query($zapytanie,$baza);
  21.     if ($result) {
  22.             while($row=mysql_fetch_array($result)) {
  23.                 $dat=explode(&#092;".\", $row['data']);
  24.                 $zapytanie2=&#092;"SELECT COUNT(id) FROM blog_notki WHERE YEAR(data)=\".$dat[1].\" AND MONTH(data)=\".$dat[0];
  25.                 $result2=mysql_query($zapytanie2,$baza);
  26.                 $row2=mysql_fetch_array($result2);
  27.                 echo(&#092;"<a href=\"base.php?m=\".$dat[0].\"&r=\".$dat[1].\"\">\".$m[$dat[0]].\" \".$dat[1].\" [\".$row2['COUNT(id)'].\"]</a><br>\");
  28.                 }
  29.              } 
  30.     
  31.     mysql_close($baza);
  32.     } else echo(&#092;"brak połączenia z bazą danych :(\");
  33.  
  34. ?>



po wykonaniu powyższego kodu dostaje takie cos:

Kod
Wrzesień 2003 [2]
Lipiec 2004 [3]
Marzec 2004 [2]
Listopad 2003 [3]
Październik 2003 [1]
Styczeń 2004 [1]


(tam w nawiasach kwadratowych jest podana ilość notek w danym miesiącu)

i tu wlasnie jest problem.... bo to nie jest tak jak mialo byc! Mialo być po kolei....

z góry dziękuje za pomoc

--
limak
JOHNY
W zasadzie powinno działać bo ja mam coś podobnego w systemie newsow i mi wyświetla dobrze daty
Popraw sobie w zapytaniu
  1. <?php
  2.  
  3. MONTH(data)=&#092;".$dat[0];
  4. na
  5. MONTH(data)=&#092;".$dat[0].\"\";
  6. ?>

Ale to i tak nie ma znaczenia chyba

Być może coś mu sie miesza z nazwami miesięcy ale toteż nie możliwe

Na wszelki wypadek spóbuj wywołać wynik w formi liczbowej 06.2004 [3]

A i jeszcze zobacz co się stanie jak do zapytania z Count dodasz na końcu ORDER BY data DESC
limak
ok, sprawdze smile.gif

kurcze, cały czas sie z tym mecze i wszystko jest dobrze a nie dziala biggrin.gif hehee, poprobuje z tym co mi poleciles.
DeyV
a tak apropo - dlaczego robisz to przy pomocy takiej ilości zapytań, jeśli można to zrobić 1? (które powinno wyglądać jakoś tak)
  1. SELECT DATE_FORMAT(DATA,'%c.%Y') AS DATA, COUNT(id) FROM blog_notki GROUP BY DATE_FORMAT(DATA,'%c.%Y')
  2. ORDER BY DATA DESC
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.