Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie według ostatnie postu
Forum PHP.pl > Forum > PHP
MOniToR
Obecnie na swojej strone mam mini forum. I chciałbym zrobić aby tematy na tym forum wyświetlany były w kolejności weług dat pisanych postów. Czyli po prostu aby temat do którego ostatnio był napisany post wyświetlał mi się na górze listy.

Obecnie moje forum polega w podobny sposób jak newsy.
Tabela comments:
  1. CREATE TABLE `comments` (
  2. `comment_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `art_id` int(11) NOT NULL DEFAULT '0',
  4. `type_id` varchar(32) NOT NULL DEFAULT '',
  5. `user_id` varchar(32) DEFAULT NULL,
  6. `COMMENT` text,
  7. `time` varchar(32) NOT NULL DEFAULT '',
  8. `date` varchar(32) NOT NULL DEFAULT '',
  9. PRIMARY KEY (`comment_id`)
  10. ) TYPE=MyISAM AUTO_INCREMENT=145 ;

Tabela z tematami:
  1. CREATE TABLE `czacik_tematy` (
  2. `temat_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `tytul` varchar(255) NOT NULL DEFAULT '',
  4. `tresc` text NOT NULL,
  5. `data` varchar(16) NOT NULL DEFAULT '',
  6. `godzina` varchar(16) NOT NULL DEFAULT '',
  7. `autor` varchar(16) NOT NULL DEFAULT '',
  8. PRIMARY KEY (`temat_id`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=14 ;

Część kodu odpowiedzialna za wyświetlanie listy tematów:
  1. <?
  2. $porcja=10;
  3. $wiersz=0+$dawka;
  4. $sql = &#092;"select * from czacik_tematy ORDER BY temat_id DESC limit $wiersz, $porcja\";
  5. $result = mysql_query($sql);
  6. $sql1 = &#092;"select * from czacik_tematy ORDER BY temat_id\";
  7. $result1 = mysql_query($sql1);
  8. $vol = mysql_num_rows($result1);
  9. while($rowee = mysql_fetch_array($result)) {
  10. $bg = ( $i_cos % 2 ) ? '#2E2E2E' : '#222222';
  11.  $id = $rowee[&#092;"temat_id\"];
  12.  $sql3 = &#092;"select * from comments where art_id = '$id' and type_id = 5\";
  13.  $result3 = mysql_query($sql3);
  14.  $cnt = mysql_num_rows($result3);
  15. print(&#092;"<tr bgcolor=\"$bg\"><td style=\"padding-left:15px\"> <a href=\"czacik.php?temat=\".$rowee[\"temat_id\"].\"\">\".$rowee[\"tytul\"].\"</a></td><td>\".$rowee[\"autor\"].\"</td><td>\".$rowee[\"data\"].\"</td><td>$cnt</td></tr> \");
  16.  $i_cos++;
  17.  
  18.  
  19. }
  20. ?>
  21. <tr><td colspan=\"4\" align=\"center\">
  22. <?
  23. $r=$wiersz-$porcja;
  24. $f=$wiersz+$porcja;
  25. if($r >= 0){
  26. echo &#092;"( <a href=czacik.php?main&dawka=$r>Poprzednia strona</a> )  \";
  27. }
  28. if($f < $vol){
  29. echo &#092;"( <a href=czacik.php?main&dawka=$f>Nastepna strona</a> )\";
  30. }
  31.  ?>
Będe wdzięczny za pomoc smile.gif
Kuziu
Po 1 to lepiej zamiast kolumn "Data,Godzina" użyć jednej w której będziesz trzymał czas unixowy ... time();

Po 2 dodaj 1 kolumnę w tematach forum z datą ostatniego post'a i wedle niej sortuj ...
jerrys
Po pierwsze zmienilbym bym typy date i data na typ DATA a time i godzina na typ TIME zamiast varchar
  1. `time` varchar(32) NOT NULL DEFAULT '',
  2. `date` varchar(32) NOT NULL DEFAULT '',



A sortowanie to masz tutaj - myślę że powinno wystarczyć:
  1. SELECT *
  2. FROM czacik_tematy ct LEFT JOIN comments c ON ct.temat_id=c.art_id ORDER BY c.date DESC , c.time DESC , ct.temat_id DESC LIMIT $wiersz, $porcja


biggrin.gif powinno działać
Vertical
Ja stworzyłbym jedną tabelę typu DATETIME
Cytat(jerrys)
Po pierwsze zmienilbym bym typy date i data na typ DATA

chyba chodziło o DATE
jerrys
Tak chodziło mi o DATE smile.gif pomyłka - przecież typu DATA nie ma tongue.gif


Cytat
Ja stworzyłbym jedną tabelę typu DATETIME


Chyba chodzi Ci o kolumne a nie tabele cool.gif
Jak DATE i TIME będzie w osobnych kolumnach to nie trzeba potem tego rozdzielać do wyświetlania. Jak kto woli :roll2:
MOniToR
Cytat(Kuziu @ 2005-01-31 10:19:54)
Po 1 to lepiej zamiast kolumn "Data,Godzina" użyć jednej w której będziesz trzymał czas unixowy ... time();

Po 2 dodaj 1 kolumnę w tematach forum z datą ostatniego post'a i wedle niej sortuj ...

dzieki smile.gif działa smile.gif
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.