Здравствуйте, есть код вывода последних сообщений с форума ipb версии 2.3.4
$posts = 10;
$showtopiclength = 1;
$topiclength = 100;
$forumexclude = "88,28,31,22,65";
$datedisplay = 'd.n.Y';
$timedisplay = 'H:i:s';
require "ips_kernel/class_db_mysql.php";
require "conf_global.php";
$db = new db_driver_mysql;
$db->obj['sql_database'] = $INFO['sql_database'];
$db->obj['sql_user'] = $INFO['sql_user'];
$db->obj['sql_pass'] = $INFO['sql_pass'];
$db->obj['sql_host'] = $INFO['sql_host'];
$db->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix'];
$db->obj['mysql_codepage'] = $INFO['mysql_codepage'];
$db->connect();
$getposts = $db->query("SELECT posts, last_poster_name, last_poster_id, title, tid, forum_id, last_post FROM ibf_topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $posts");
while ($post = $db->fetch_row($getposts)) {
$post[full_title] = $post[title];
if ($showtopiclength == 1 AND strlen($post[full_title]) > $topiclength) {
$post[short_title] = substr($post[full_title],0,$topiclength);
$post[short_title] = $post[short_title]."...";
}
else {
$post[short_title] = $post[full_title];
}
$posted_on = date($datedisplay, $post[last_post]);
$today_date = date($datedisplay, time());
If ($posted_on == $today_date) {
$datefield = "Сегодня";
$datefield = $datefield . ", " . date($timedisplay, $post[last_post]);
}
elseif (date('d F Y',strtotime("-1 day")) == $posted_on) {
$datefield = "Вчера";
$datefield = $datefield . ", " . date($timedisplay, $post[last_post]);
}
else {
$datefield = $posted_on;
}
<<<EOD
<a href="$INFO[board_url]/index.php?showtopic=$post[tid]&view=getnewpost" target="_blank"><img src="http://tulagrad.su/img/message.gif" border=0><font face="Tahoma" size="1" color="#000000">"$post[short_title]"</font></a><br><font face="Tahoma" size="1" color="#000000">Автор: <a href="$INFO[board_url]/index.php?showuser=$post[last_poster_id]" target="_blank"></font><b><font face="Tahoma" size="1" color="#000000">$post[last_poster_name]</font></b></a><br><font face="Tahoma" size="1" color="#000000">$datefield, Ответов: <b>$post[posts]</b></font><br>
</font>
EOD;
}
?>
Drupal 6.1 выводит в неправильной кодировке
Можно это как-то исправить?
Комментарии
первой командой после создания драйвера выполните
SET NAMES utf8;
К сожалению я не силен в php,
Пытаюсь сделать так:
mysql_query("SET NAMES 'utf8'");
Не работает,
Надо выполнять запрос над созданным драйвером!
Я не знаю IPB DB API, но видимо, так:
<?php
$db = new db_driver_mysql;
// setup
$db->connect();
$db->query('SET NAMES utf8');
?>
Если IPB тупо не даст сделать по-человечески, то конвертите руками каждый столбец.
<?php
$normal_title = iconv('CP1251', 'UTF-8', $post['title']);
?>
Спасибо большое Akzhan, помогло $db->query('SET NAMES utf8');
опишите пожалуйста в комментарии конечный код для вывода тем форума ipb в блок
и может кто знает как выводить темы для версии 5.7 или общую для 5.х
Буду премного благодарен.
$posts = 10;
$showtopiclength = 1;
$topiclength = 100;
$forumexclude = "88,28,31,22,65";
$datedisplay = 'd.n.Y';
$timedisplay = 'H:i:s';
require "ips_kernel/class_db_mysql.php";
require "conf_global.php";
$db = new db_driver_mysql;
$db->obj['sql_database'] = $INFO['sql_database'];
$db->obj['sql_user'] = $INFO['sql_user'];
$db->obj['sql_pass'] = $INFO['sql_pass'];
$db->obj['sql_host'] = $INFO['sql_host'];
$db->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix'];
$db->obj['mysql_codepage'] = $INFO['mysql_codepage'];
$db->connect();
$db->query('SET NAMES utf8');
$getposts = $db->query("SELECT posts, last_poster_name, last_poster_id, title, tid, forum_id, last_post FROM ibf_topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $posts");
while ($post = $db->fetch_row($getposts)) {
$post[full_title] = $post[title];
if ($showtopiclength == 1 AND strlen($post[full_title]) > $topiclength) {
$post[short_title] = substr($post[full_title],0,$topiclength);
$post[short_title] = $post[short_title]."...";
}
else {
$post[short_title] = $post[full_title];
}
$posted_on = date($datedisplay, $post[last_post]);
$today_date = date($datedisplay, time());
If ($posted_on == $today_date) {
$datefield = "Сегодня";
$datefield = $datefield . ", " . date($timedisplay, $post[last_post]);
}
elseif (date('d F Y',strtotime("-1 day")) == $posted_on) {
$datefield = "В";
$datefield = $datefield . ", " . date($timedisplay, $post[last_post]);
}
else {
$datefield = $posted_on;
}
echo
<<<EOD
<a href="$INFO[board_url]/index.php?showtopic=$post[tid]&view=getnewpost" target="_blank"><img src="http://tulagrad.su/img/message.gif" border=0><font face="Tahoma" size="1" color="#000000">"$post[short_title]"</font></a><br><font face="Tahoma" size="1" color="#000000">Автор: <a href="$INFO[board_url]/index.php?showuser=$post[last_poster_id]" target="_blank"></font><b><font face="Tahoma" size="1" color="#000000">$post[last_poster_name]</font></b></a><br><font face="Tahoma" size="1" color="#000000">$datefield, Ответов: <b>$post[posts]</b></font><hr>
</font>
EOD;
}
?>
Этот код нужно сохранить в файле в дириктории с форумом а потом инклюдом подключить его в drupal
например:
include("forums/export.php");
?>
А что Друпал только с кириллицей работает?
Как раз наоборот, Drupal настроен на Unicode.
А вот IPB в России чаще всего настраивают на кодировку cp1251 (кириллица, windows).