Jump to content
php.lv forumi

Recommended Posts

Posted

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!

Posted

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.

Posted

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.

Posted

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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...