Последни теми от форума

PHP_Masters

Registered
Чудех се доста време как да направя последни теми от форума и да ги вадя с 1 цикъл, името на форума се вади от forums а последната тема от topics, като си има на темата forumid

дано сте ме разбрали

Аз не можах да се сетя как да направя така, че на последната тема forumid да е със самото id на форума
 
Ами то и по този начин ще стане
<?php
$sql = mysql_query('SELECT * FROM `table` ORDER BY `id` DESC LIMIT 10');
while($row = mysql_fetch_assoc($sql))
{
echo 'Последни теми:
<br />
'.$row['name'].'';
}
?>

Текста в червено трябва да си го поправиш!
 
Baso това нещо можеш ли да го направиш за IPB или да обесниш малко по-подробно че съм нов в тези работи :)
 
h4x0r каза:
Baso това нещо можеш ли да го направиш за IPB или да обесниш малко по-подробно че съм нов в тези работи :)

Виж това

http://web-tourist.net/login/login/view.php?st=1852
 
@baso, мой човек, ти разбра ли какво питам, това и аз мога да си го напиша

Аз искам да изкарам името на форума от таблицата forums, и искам да му сложа до него последна тема в която е писана, а те се взимат от topics.

Та проблема е, че не знам как да изведа последната тема от дадения форум
 
дай структурата на таблиците forums, topics и posts
 
Намерих структура на таблиците на някакъв стар phpbb форум и с него се получава така ...

Код:
SELECT
f.forum_name,
(SELECT t.topic_id FROM topics t WHERE t.forum_id=f.forum_id ORDER BY t.topic_time DESC LIMIT 1) AS 'topic_id',
(SELECT t.topic_title FROM topics t WHERE t.forum_id=f.forum_id ORDER BY t.topic_time DESC LIMIT 1) AS 'topic_title'
FROM forums f
LEFT JOIN categories c USING(cat_id)
ORDER BY c.cat_order ASC, f.forum_order ASC

ако ми дадеш твите таблици може да стане конкретно за твоя случай освен ако това не проработи и при теб

Може би тук е добре да се съобрази правото на потребителя да вижда теми в даден форум ... но без структурата на базата няма как да знам как да го направя.
 
<?php
include_once("config.php");

mysql_connect($dbhost,$dbuser,$dbpasswd)or die(mysql_error());
mysql_select_db($dbname)or die(mysql_error());
mysql_query("SET NAMES cp1251")or die(mysql_error());
$query = mysql_query("
SELECT `phpbb_forums`.`forum_name`,`phpbb_posts`.`post_time`,`phpbb_users`.`username` FROM
`phpbb_forums` LEFT JOIN `phpbb_posts` ON `phpbb_forums`.`forum_id` = `phpbb_posts`.`forum_id`
LEFT JOIN `phpbb_users` ON `phpbb_posts`.`poster_id` = `phpbb_users`.`user_id`
GROUP BY `phpbb_forums`.`forum_id` ORDER BY `phpbb_forums`.`forum_id` ASC
")or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
echo $row['forum_name']." => ".date("d/M/Y H:i:s",$row['post_time'])." => ".$row['username']."<br />";
}
?>
Тествано е, и работи ... стига да е това, което търсиш :?:
 
@Replace,
Ако форумите имат и категории остава да ги подредиш и по категории. За да са подредени, като в индекса.
И между другото твоето query се изпълнява за 2 сек. а моето за 0.05 (40 пъти по-бързо), на един и същ форум а даже не ги сортираш по категории.
Къде ти отиде перформънса?
 
ето я структурата

Код:
CREATE TABLE `answers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `author` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `date` int(11) NOT NULL,
  `text` text COLLATE utf8_unicode_ci NOT NULL,
  `topicid` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;


CREATE TABLE `forums` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `desc` varchar(50) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
ктура на таблица `topics`


CREATE TABLE `topics` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `forumid` int(11) NOT NULL,
  `title` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `author` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `date` int(11) NOT NULL,
  `text` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;

само ако може после да ми поясните заявката малко по-навътре
 
ggenov каза:
@Replace,
Ако форумите имат и категории остава да ги подредиш и по категории. За да са подредени, като в индекса.
И между другото твоето query се изпълнява за 2 сек. а моето за 0.05 (40 пъти по-бързо), на един и същ форум а даже не ги сортираш по категории.
Къде ти отиде перформънса?
Да, това не го сметнах, затова пък просто добавяме
GROUP BY `phpbb_forums`.`forum_id` ORDER BY `phpbb_forums`.`cat_id`, `phpbb_forums`.`forum_id` ASC
и работата заспива.
Относно перформънса не знам къде си тествал, но при мене разликите не са толкова фрапиращи. Сложи още един СЕЛЕКТ в заявката, за таблицата users :?:
 

Back
Горе