m8t Posted August 11, 2009 Report Share Posted August 11, 2009 Tātad, ideja vienkārša, vajag izveidot skriptu, kurš izvadītu tās tēmas id, kurā ir pēdējais posts. Pašreizējais skripts: $query = "SELECT DISTINCT topic_id FROM {$tblprefix}komentari ORDER BY datums DESC LIMIT 6"; $run = mysql_query($query); while($row = mysql_fetch_array($run)) { echo $row['topic_id']; } Šis skripts pa pusei strādā. Būs grūti paskaidrot, bet mēģināšu. Tātad, man ir tēmas ar id: 1 2 3 Komentāri ir lūk šādi: 1. tēmā komentārs ar id 1 2. tēmā komentārs ar id 2 1. tēmā komentārs ar id 3 3. tēmā komentārs ar id 4 Tātad vēlētos lai mans skripts viņus saorganizētu šādi: 3. tēma 1. tēma 2. tēma Bet tā vietā viņš man izvada šādi: 3. tēma 2. tēma 1. tēma Atvainojos, ja ļoti neskaidri paskaidroju, centos cik spēju lai mani varētu saprast! Quote Link to comment Share on other sites More sharing options...
kechums Posted August 11, 2009 Report Share Posted August 11, 2009 Kā pa pusei strādā? Vai nu strādā, vai nestrādā :) Neredzu kodā no visa izejošā neko nepareizu, varbūt, komentāru secība tomēr ir savādāka nekā Tu nosauci, tāpēc izvadē ir 3, 2, 1, nevis 3, 1, 2? Varētu parādīt tabulas struktūru drošības pēc, šķiet, ka vizualizēju prātā to visu pareizi, bet ja nu kas. Quote Link to comment Share on other sites More sharing options...
m8t Posted August 11, 2009 Author Report Share Posted August 11, 2009 Komentāri: CREATE TABLE IF NOT EXISTS `jv_komentari` ( `id` int(11) NOT NULL auto_increment, `topic_id` int(11) NOT NULL, `author` int(11) NOT NULL, `comment` varchar(1000) character set utf8 collate utf8_bin NOT NULL, `datums` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=71 ; Pašas tēmas: CREATE TABLE IF NOT EXISTS `jv_forums` ( `id` int(11) NOT NULL auto_increment, `topic` varchar(30) character set utf8 collate utf8_bin NOT NULL, `date` timestamp NOT NULL default CURRENT_TIMESTAMP, `text` varchar(1000) character set utf8 collate utf8_bin NOT NULL, `made_by` int(11) NOT NULL, `news` int(11) NOT NULL default '0', `avatar` varchar(10000) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ; Mazliet savādāk mēģināšu paskīdrot: Tātad, es izveidoju 2 tēmas. 1. nav neviens komentārs. 2. es iepostoju 2 komentārus. Pēc laiciņa 1. es iepostoju 1 komentāru un 2. iepostoju vēl 1 komentāru. Tātad pašlaik ir 1. tēmā - 1 komentārs, 2. tēmā - 3 komentāri. Pēdējais komentārs ir ielikt 2. tēmā. Tātad, pēc idejas vajadzētu sakārtoties šādi: 2. tēma 1. tēma Bet diemžēl man sakārtojas šādi: 1. tēma 2. tēma Tātad, tiek ņemts vērā tikai pats pirmais komentārs un pirmā komentāra laiks. Netiek ņemts vērā pēdējā komentāra laiks. Quote Link to comment Share on other sites More sharing options...
r00m Posted August 11, 2009 Report Share Posted August 11, 2009 (edited) Izņem distinct un viss smuki darbojas. Edited August 11, 2009 by r00m Quote Link to comment Share on other sites More sharing options...
m8t Posted August 12, 2009 Author Report Share Posted August 12, 2009 Bez distinct mana izdruka būtu apmēram šāda: 2. tēma 1. tēma 2. tēma 2. tēma Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted August 12, 2009 Report Share Posted August 12, 2009 Kā būtu ar šādu: SELECT f.id, f.topic, MAX(k.datums) AS datums FROM jv_forums AS f LEFT JOIN jv_komentari AS k ON f.id = k.topic_id GROUP BY (f.id) ORDER BY datums DESC LIMIT 6 Nepārbaudīju. Quote Link to comment Share on other sites More sharing options...
m8t Posted August 12, 2009 Author Report Share Posted August 12, 2009 Liels paldies aleksej! Viss sanāca :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.