[Help] Вывод последних тем с форума

Статус
В этой теме нельзя размещать новые ответы.

Avalanch

ТоЛеГ & ТоПеГ
Регистрация
9 Янв 2007
Сообщения
1.140
Реакции
615
Доброго времени суток!

Кто знает как можно вывести последние темы с форума на сайт?
Версия форума vB 4.0.1
Желательно готовое решение, так как не программист.
 
Пользуюсь таким решением, но у меня форум 3.8, я надеюсь что подойдет и для 4-й линейки, для самого будет актуально если буду обновляться.
PHP:
<?php 
// ################################ 
// Даже если база сайта и база форума находится не на одном хосте, то 
// в том месте на сайте, где хотите видеть последние "х" тем с форума, подключить код ниже 
/* 
    include 'http://path_to_file/file.php'; 
*/ 
// где "path_to_file" - путь до файла 
// ################################ 
SetLocale(LC_ALL, 'ru_RU.UTF-8');
require('./forum/includes/config.php');   // написать свой путь до файла конфига форума 
// Define($tableprefix = $config['Database']['tableprefix']); 
$link = mysql_connect(
              ($config['MasterServer']['servername']),
              ($config['MasterServer']['username']),
              ($config['MasterServer']['password'])
              )
       or die
            ("Нет соединения с базой");
mysql_select_db(($config['Database']['dbname']), $link) or die ("Невозможно выбрать базу");
// ###### Начало настроек ###### 
   $forumdir = "/forum";                    // директория форума (без слэша "/" в конце) 
                                             // если форум и сайт в разных доменах, прописать полный URL до дир. форума 
   $privateforumid = "0";          // закрытые форумы (ID форумов прописывать через запятую) 
                                             // если закрытых форумов нет, оставить как есть "0" (ноль) 
   $showlimit = "10";                         // лимит выводимых тем 
// ###### Конец настроек ###### 
        $lastx_thread = $query=(" 
                          SELECT threadid, 
                                 lastposter, 
                                 title, 
                                 postusername, 
                                 T.lastpost AS lastpostdate, 
                                 views, 
                                 postuserid, 
                                 replycount, 
                                 U.userid as userid 
                          FROM ".$tableprefix."thread T 
                          LEFT JOIN ".$tableprefix."user U ON (T.lastposter = U.username) 
                          WHERE forumid NOT IN ($privateforumid) 
                          ORDER BY T.lastpost DESC 
                          LIMIT $showlimit 
                          "); 
$result = mysql_query($query, $link); 
  echo mysql_error(); 
$ct=1;
  echo "<table class=latest-phorum-messages><tr>";
  while ($lastx_thread = mysql_fetch_array($result)) 
        {
        $k =fmod($ct,2);
        if ($k==1)
	echo "</tr><tr>";
 	$ct=$ct+1;
  echo "<td><div><a class=topic href='$forumdir/showthread.php?goto=lastpost&t=".$lastx_thread['threadid']."'>".$lastx_thread['title']."</a>"; 
     if ($lastx_thread['userid']) 
  echo "".date("d.m.y, H:i",$lastx_thread['lastpostdate'])." ({$lastx_thread['views']}/{$lastx_thread['replycount']}) <a href='$forumdir/member.php?action=getinfo&userid=".$lastx_thread['userid']."'>".$lastx_thread['lastposter']."</a>
        </div></td>";  
    else 
  echo "<td><font size='-1'>тема:  <a href='$forumdir/showthread.php?goto=lastpost&t=".$lastx_thread['threadid']."'>".$lastx_thread['title']."</a></font> </td>
        <td><font size='-1'>автор:  {$lastx_thread['lastposter']}</font> </td>
        <td><font size='-1'>дата:  ".date("d.m.y, H:i",$lastx_thread['lastpostdate'])."</font> </td>
        <td><font size='-1'>просмотров: {$lastx_thread['views']}</td>
        <td>ответов: {$lastx_thread['replycount']}</font> </td>
	";
  echo "";
   } 
  echo "</tr></table>";
?>

з.ы. немного подправлял что-бы выводились темы таблицей в две колонки
 
Пользуюсь таким решением, но у меня форум 3.8, я надеюсь что подойдет и для 4-й линейки, для самого будет актуально если буду обновляться.
з.ы. немного подправлял что-бы выводились темы таблицей в две колонки

На 4ой линейке код работает тоже. Только проблема с кодировкой.
 
На 4ой линейке код работает тоже. Только проблема с кодировкой.
Была такая-же проблема, сайт был в utf8, форум в 1251, пришлось конвертировать базу форума в utf8.

SetLocale(LC_ALL, 'ru_RU.UTF-8');

Вот эта строчка я так думаю отвечает за кодировку, UTF-8 поменять на WINDOWS-1251 не пробовали?
 
  • Заблокирован
  • #6
добавь в начало перед путём к конфигу форума:
PHP:
$db->query("SET NAMES latin1");
или попробуй заюзать данный мод калиостро:
Посмотреть вложение Block_vb.zip
он для версии 3.7.х и 3.8.х на 4.х.х не тестил пока что :)
 
Пробовал, не помогло. В общем буду думать.
Тоже вернулся к этой проблеме, сайт utf8, форум в cp1251.
Вы нашли решение?
добавь в начало перед путём к конфигу форума:
PHP:
$db->query("SET NAMES latin1");
Этот вариант не помог к сожалению.
или попробуй заюзать данный мод калиостро:
Посмотреть вложение 31518
он для версии 3.7.х и 3.8.х на 4.х.х не тестил пока что :)
А что делает этот мод?
 
Вот кусок кода:

PHP:
("Нет соединения с базой"); 
mysql_select_db(($config['Database']['dbname']), $link) or die ("Невозможно выбрать базу");
после вставить это:

PHP:
mysql_query("SET NAMES 'utf8'");

==
UPD:
я использую это:

PHP:
<?php
$db_host = "localhost"; // Change this if your MySQL database host is different.
$db_name = ""; // Change this to the name of your database.
$db_user = ""; // Change this to your database username.
$db_pw = ""; // Change this to your database password.

$forum_url = "http://beer-review.ru/forum"; // Change this to reflect to your forum's URL.
$forum_id = ""; // If you wish to display the posts from a specific forum, enter the forum id here. Otherwise, leave it blank.
$limit = "5"; // Number of posts displayed.
$excludeforums = ""; // The forums you want to exclude from being displayed
$txtlimit = "120"; // This is the character limit.
$wheresql = "";
#######################################

// Connecting to your database
mysql_connect($db_host, $db_user, $db_pw) 
OR die ("Cannot connect to your database"); 
mysql_select_db($db_name) OR die("Cannot connect to your database"); 
mysql_query("SET NAMES 'utf8'");

// Below is the beginning of a table. If you feel you don't need it, you may remove it.
echo "<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">";

if ($forum_id) {
$forum_id = "AND forumid=$forum_id";
}

if ($limit) {
$limited = "LIMIT $limit";
}
if ($excludeforums == "" or $excludeforums <= "0") {
$quarter = "no";
} else {
$excfid = explode(",",$excludeforums); $i = 0; $a = count($excfid);
while ($i < $a) {
$wheresql .= " AND thread.forumid!='$excfid[$i]'";	++$i;
}
}
$qw = "SELECT threadid,title,lastpost,lastposter,forumid FROM thread WHERE visible=1 $wheresql AND open=1 $forum_id ORDER BY lastpost DESC $limited";
//PRINT $qw;
$thread_sql = mysql_query($qw);

while($thread_get=mysql_fetch_array($thread_sql))
{
$lastpost = $thread_get['lastpost'];
$poster = $thread_get['lastposter'];
$tid = $thread_get['threadid'];
$psql = mysql_query("SELECT postid FROM post WHERE threadid=$tid ORDER BY postid DESC");
$getp=mysql_fetch_array($psql);
$pid = $getp['postid'];
$date2 = date ("d/m H:i" ,$lastpost);
$title = $thread_get['title'];
$title = substr($title,0,$txtlimit);
echo "<tr><td><a href=\"$forum_url/showthread.php?p=$pid#post$pid\">$title</a> ответ от $poster <i>$date2</i></td></tr>";
}
echo "</table>";

?>


такой-же как и первый вариант, только вывод не в 2 столбика, а в 1..по-смипотичней
 
Сразу после соединения с БД, в зависимости от кодировки:
mysql_query("SET NAMES 'utf8'");
либо
Код:
mysql_query("SET NAMES 'cp1251'");

и на самой странице тоже пропишите кодировку
Код:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху