Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie według ostatnie postu, tak jak tematy na forum
MOniToR
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 2
Dołączył: 16.11.2003
Skąd: Wrocław / Skokowa

Ostrzeżenie: (10%)
X----


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


--------------------
Go to the top of the page
+Quote Post
Kuziu
post
Post #2





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


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 ...


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
jerrys
post
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.02.2004

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


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ć

Ten post edytował jerrys 31.01.2005, 09:51:48
Go to the top of the page
+Quote Post
Vertical
post
Post #4





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


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

Ten post edytował Vertical 31.01.2005, 10:10:01
Go to the top of the page
+Quote Post
jerrys
post
Post #5





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.02.2004

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


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:

Ten post edytował jerrys 31.01.2005, 10:54:39
Go to the top of the page
+Quote Post
MOniToR
post
Post #6





Grupa: Zarejestrowani
Postów: 182
Pomógł: 2
Dołączył: 16.11.2003
Skąd: Wrocław / Skokowa

Ostrzeżenie: (10%)
X----


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


--------------------
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 - 04:12