Спасибо,не могу пока все-таки догнать,образование хромает.
Вот этот блок, он у меня стоит на главной внизу,выводит последние сообщения с форума , последние файлы,ссылки и юзеры.
PHP код:
<?php
if( eregi( "block-Rus_Center.php",$PHP_SELF ) )
{
Header("Location: index.php");
die();
}
global $prefix, $dbi, $sitename, $bgcolor1, $bgcolor2;
$HideViewReadOnly = 1;
$Last_New_Topics = 10;
$IconPath = "images/icon_mini_message.gif";
$border = 1;
$cellspacing = 1;
$result = sql_query( "SELECT * FROM ".$prefix."_bbtopics", $dbi );
$Amount_Of_Topics = sql_num_rows( $result );
$result = sql_query( "SELECT * FROM ".$prefix."_bbposts", $dbi );
$Amount_Of_Posts = sql_num_rows( $result );
$Amount_Of_Topic_Views = 0;
$result = sql_query( "SELECT topic_views FROM ".$prefix."_bbtopics", $dbi );
while( list( $topic_views ) = sql_fetch_row( $result, $dbi ) )
{
$Amount_Of_Topic_Views = $Amount_Of_Topic_Views + $topic_views;
}
$Amount_Of_Topic_Replies = 0;
$result = sql_query( "SELECT topic_replies FROM ".$prefix."_bbtopics", $dbi );
while( list( $topic_replies ) = sql_fetch_row( $result, $dbi ) )
{
$Amount_Of_Topic_Replies = $Amount_Of_Topic_Replies + $topic_replies;
}
$result = sql_query( "SELECT * FROM ".$prefix."_users", $dbi );
$Amount_Of_Members = sql_num_rows( $result );
$Count_Topics = 0;
$Topic_Buffer = "";
$result1 = sql_query( "SELECT topic_id, forum_id, topic_last_post_id, topic_title, topic_poster, topic_views, topic_replies, topic_moved_id FROM ".$prefix."_bbtopics ORDER BY topic_last_post_id DESC", $dbi );
while( list( $topic_id, $forum_id, $topic_last_post_id, $topic_title, $topic_poster, $topic_views, $topic_replies, $topic_moved_id ) = sql_fetch_row( $result1, $dbi ) )
{
$skip_display = 0;
if( $HideViewReadOnly == 1 )
{
$result5 = sql_query( "SELECT auth_view, auth_read FROM ".$prefix."_bbforums where forum_id = '$forum_id'", $dbi );
list( $auth_view, $auth_read ) = sql_fetch_row( $result5, $dbi );
if( ( $auth_view != 0 ) or ( $auth_read != 0 ) ) { $skip_display = 1; }
}
if( $topic_moved_id != 0 )
{
// Shadow Topic !!
$skip_display = 1;
}
if( $skip_display == 0 )
{
$Count_Topics += 1;
$result2 = sql_query( "SELECT topic_id, poster_id, FROM_UNIXTIME( post_time,'%d/%m/%Y') as post_time FROM ".$prefix."_bbposts where post_id = '$topic_last_post_id'", $dbi );
list( $topic_id, $poster_id, $post_time ) = sql_fetch_row( $result2, $dbi );
$result3 = sql_query( "SELECT username, user_id FROM ".$prefix."_users where user_id='$poster_id'", $dbi );
list( $username, $user_id ) = sql_fetch_row( $result3, $dbi );
$LastPoster = "<A class=block2 HREF=\"modules.php?name=Forums&file=profile&mode=viewprofile&u=$user_id\"STYLE=\"text-decoration: none\"> $username </a>";
$result4 = sql_query( "SELECT username, user_id FROM ".$prefix."_users where user_id='$topic_poster'", $dbi );
list( $username, $user_id ) = sql_fetch_row( $result4, $dbi );
$OrigPoster = "<A class=block2 HREF=\"modules.php?name=Forums&file=profile&mode=viewprofile&u=$user_id\"STYLE=\"text-decoration: none\"> $username </a>";
$TopicTitleShow = "<a CLASS=block2 href=\"modules.php?name=Forums&file=viewtopic&p=$topic_la st_post_id#$topic_last_post_id\"STYLE=\"text-decoration: none\">$topic_title</a>";
$Topic_Buffer .= "<tr><td bgcolor=\"$bgcolor1\"> $TopicTitleShow</td><td bgcolor=\"$bgcolor1\"><div align=\"center\"><font class=block>$OrigPoster</font></div></td><td bgcolor=\"$bgcolor1\"><div align=\"center\"><font class=block><b>$topic_views</b></font></div></td><td bgcolor=\"$bgcolor1\"><div align=\"center\"><font class=block><b>$topic_replies</b></font></div></td><td align=\"center\" bgcolor=\"$bgcolor1\"><font class=block>$LastPoster $post_time</font></td></tr>";
}
if( $Last_New_Topics == $Count_Topics ) { break 1; }
}
$content = "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"bgcolor=\"$bgcolor2\">";
$content .= "<tr><td width=\"100%\" height=\"18\" colspan=\"5\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Последние сообщения на форуме</b></font></td></tr>";
$content .= "<tr><td align=\"center\" bgcolor=\"#eeeee4\" height=\"18\"><font class=block><b>Последние темы</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Открыл</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Просмотров</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Ответов</b></font></td><td align=\"center\" bgcolor=\"#eeeee4\"><font class=block><b>Последний</b></font></td></tr>";
$content .= "$Topic_Buffer";
$content .= "</table><br>";
$strip = "20"; // how many characters to show
$viewdot = "<img src=\"images/link.gif\" border=\"0\" alt=\"\"> ";
$viewdot2 = "<img src=\"images/down.gif\" border=\"0\" alt=\"\"> ";
$viewdot3 = "<img src=\"images/user.gif\" border=\"0\" alt=\"\"> ";
$content .="<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"bgcolor=\"$bgcolor2\">";
$content .= "<tr><td width=\"33%\" height=\"18\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Новые ссылки</b></font></td>";
$content .= "<td width=\"34%\" height=\"18\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Новые файлы</b></font></td>";
$content .= "<td width=\"33%\" height=\"18\" align=\"center\" bgcolor=\"ff9900\"><font class=block><b>Наши пользователи</b></font></td>";
$content .="</tr>";
$content .="<tr>";
$content .="<td valign=\"top\" bgcolor=\"$bgcolor1\">";
$result = sql_query("select lid, title from $prefix"._links_links." order by lid DESC limit 0,4", $dbi);
while(list($lid, $title) = sql_fetch_row($result, $dbi)) {
$linkstrip4 = stripslashes($title);
if(strlen($linkstrip4) > $strip) {
$linkstrip4 = substr($linkstrip4, 0, $strip);
$linkstrip4 .= "...";
}
$content .= "$viewdot<a CLASS=block2 href=\"modules.php?name=Web_Links&l_op=viewlinkdetails&li d=$lid&title=$title\" STYLE=\"text-decoration: none\">$linkstrip4</a><br>";
}
$result=sql_query("select * from $prefix"._links_links."", $dbi);
$numrowsl = sql_num_rows($result, $dbi);
$content .= "<hr size=\"1\" color=\"#C0C0C0\" width=\"99%\">$viewdot <font class=block>Всего: <b> $numrowsl</b></font>\n";
$content .="</td>";
$content .="<td valign=\"top\" bgcolor=\"#FFFFFF\">";
$dbi);
$result = sql_query("select cid, lid, title from $prefix"._files." order by lid DESC limit 0,4", $dbi);
while(list($cid, $lid, $title) = sql_fetch_row($result, $dbi)) {
$linkstrip5 = stripslashes($title);
if(strlen($linkstrip5) > $strip) {
$linkstrip5 = substr($linkstrip5,0,$strip);
$linkstrip5 .= "...";
}
$content .= "$viewdot2<a CLASS=block2 href=\"modules.php?name=files&d_op=viewdownloaddetails&li d=$lid&title=$title\" STYLE=\"text-decoration: none\">$linkstrip5</a><br>";
}
$result=sql_query("select * from $prefix"._files."", $dbi);
$numrowsf = sql_num_rows($result, $dbi);
$content .= "<hr size=\"1\" width=\"99%\">$viewdot2 <font class=block>Всего: <b> $numrowsf</b></font>\n";
$content .="</td>";
$content .="<td valign=\"top\" bgcolor=\"$bgcolor1\">";
global $user, $cookie, $prefix, $user_prefix, $db, $anonymous;
cookiedecode($user);
$uname = $cookie[1];
$sql = "SELECT username, user_id FROM $user_prefix"._users." ORDER BY user_id DESC LIMIT 0,1";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$lastuser = $row[username];
$iduser = $row[user_id];
$numrows = $db->sql_numrows($db->sql_query("SELECT user_id FROM $user_prefix"._users.""));
$Today = getdate();
$month = $Today['month'];
$mday = $Today['mday'];
$year = $Today['year'];
$pmonth = $Today['month'];
$pmday = $Today['mday'];
$pmday = $mday-1;
$pyear = $Today['year'];
if ($pmonth=="January") { $pmonth=1; } else
if ($pmonth=="February") { $pmonth=2; } else
if ($pmonth=="March") { $pmonth=3; } else
if ($pmonth=="April") { $pmonth=4; } else
if ($pmonth=="May") { $pmonth=5; } else
if ($pmonth=="June") { $pmonth=6; } else
if ($pmonth=="July") { $pmonth=7; } else
if ($pmonth=="August") { $pmonth=8; } else
if ($pmonth=="September") { $pmonth=9; } else
if ($pmonth=="October") { $pmonth=10; } else
if ($pmonth=="November") { $pmonth=11; } else
if ($pmonth=="December") { $pmonth=12; };
$test = mktime (0,0,0,$pmonth,$pmday,$pyear,1);
$curDate2 = "%".$month[0].$month[1].$month[2]."%".$mday."%".$year."%";
$preday = strftime ("%d",$test);
$premonth = strftime ("%B",$test);
$preyear = strftime ("%Y",$test);
$curDateP = "%".$premonth[0].$premonth[1].$premonth[2]."%".$preday."%".$preyear."%";
$sql = "SELECT COUNT(user_id) AS userCount FROM $user_prefix"._users." WHERE user_regdate LIKE '$curDate2'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$userCount = $row[userCount];
$sql = "SELECT COUNT(user_id) AS userCount FROM $user_prefix"._users." WHERE user_regdate LIKE '$curDateP'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$userCount2 = $row[userCount];
$content .= "$viewdot3 <font class=block>Зарегистрировались:<br>\n";
$content .= "$viewdot3 Последний: <A HREF=\"modules.php?name=Forums&file=profile&mode=viewprofile&u=$iduser\"><b>$lastuser</b></a><br>\n";
$content .= "$viewdot3 Сегодня: <b>$userCount</b><br>\n";
$content .= "$viewdot3 Вчера: <b>$userCount2</b><br>\n";
$content .= "<hr size=\"1\" width=\"99%\">$viewdot3 Всего: <b> $numrows</b>\n";
$content .="</td></tr></table>";
?>
Во-первых,понимаю,что сам этот блок - block-Rus_Center- надо бы оптимизировать,да,вот видел тут же,в этой теме на 2 странице этой темы - http://forum.mynuke.ru/showthread.p...73&page=2&pp=10
вот этот block-alls - очень близкий,вот он представлен тут уже оптимизированный или еще нет?Я не пойму, с одной стороны,у меня,если я свой нижний блок просто на этот меняю,на 32 запроса меньше становится,но мне мой block-Rus_Center больше нравится.Ну если block-alls уже оптимизированный,я как - нибудь по аналогии может и сделаю,или подскажет тот,кто его делал,если не очень затруднит.
Во-вторых,что касается постов выше,именно этот блок и не виден,если провести изменения по совету whitepanther,стало быть там в нем и надо изменять тип подключения к базе?Если кто видит это,ткните носом,а то ну не вижу...
И еще момент,о чем писал выше,на главной у меня вот этот блок,последние новости,вместо новостей,как на шкурках или PHP-Nuke по-русски.
PHP код:
<?php
//Проверка запрета прямого обращения к файлу модуля
if (!defined('MODULE_FILE')) {
die ("You can't access this file directly...");
}
//Определим глобальные переменные для работы с базой
global $db, $prefix;
//Инклюдим файл mainfile.php
require_once("mainfile.php");
//Определяем переменную, содержащую имя модуля, ее можно использовать для построения внутренних ссылок
$module_name = basename(dirname(__FILE__));
//Определяем языковые данные
get_lang($module_name);
//Переменная $index = 1 определяет наличие правых блоков, без нее их не будет.
define('INDEX_FILE', true);
//Вставляем шапку сайта и открываем таблицу для вывода данных.
include("header.php");
OpenTable();
//Ниже будет содержание вашего модуля
//Значения _HOME_TITLE, _HOME_COMENT, _HOME_COMENT2, _HOME_VIEW, _HOME_VIEW2 определяются в файле lang-russian.php
echo "<center><h3>"._HOME_TITLE."</h3></center><br>";
echo "<table>";
$a=0;
//Читаем из базы 15 последних статей.
$result4 = $db->sql_query("SELECT sid, title, UNIX_TIMESTAMP(time) as formatted, hometext, comments, counter FROM ".$prefix."_stories ORDER BY sid DESC LIMIT 0,15");
while ($row4 = $db->sql_fetchrow($result4)) {
$s_id = intval($row4['sid']);
$title_s = $row4['title'];
$text_s = $row4[hometext];
$s_data = date("d.m.Y", $row4["formatted"]);
if($a <= 2) {
//Первые три статьи выводим в расширенном режиме.
echo "<tr><td width=\"100%\" colspan=6>
<br><img border=\"0\" src=\"themes/RusNuke2003/images/topics/phpnuke.gif\"width=\"24\" height=\"24\"> $s_data
<a class=storytitle href=\"modules.php?name=News&file=article&sid=$s_id\">$title_s</a><br>$text_s";
echo "<br><font color=\"#003063\"><b>"._HOME_COMENT." </b></font>(".$row4[comments].")<font color=\"#003063\">
<b> "._HOME_VIEW." </b></font>(".$row4[counter].")";
echo "</td></tr><tr><td colspan=6><hr></td></tr>";
} else {
//Остальные статьи выводим в сроку ссылкой.
echo "<tr><td><img border=\"0\" src=\"themes/RusNuke2003/images/topics/phpnuke.gif\" width=\"24\" height=\"24\"> $s_data</td>
<td width=\"70%\"><a class=noline href=\"modules.php?name=News&file=article&sid=$s_id\">$title_s</a></td>
<td><font color=\"#003063\"><b>"._HOME_COMENT2."</b></font></td><td>(".$row4[comments].")</td>
<td><font color=\"#003063\"><b>"._HOME_VIEW2."</b></font></td><td>(".$row4[counter].")</td></tr>";
}
$a++;
}
echo "</table>";
//Закрываем таблицу и вставляем нижнюю часть сайта.
CloseTable();
include("footer.php");
?>
Модуль неоптимизирован,если вместо него включаю снова новости - запросов существенно меньше.Просил на обоих тех форумах, ну не может быть,чтобы этот модуль никто не оптимизировал,он там у них обоих на главной стоит,и видно,сколько у них запросов.Но там пока никто не отозвался, может,позже откликнутся,или тут кто это делал уже,по времени у меня большого напряга нет, а по сути делать надо.
Заранее всем спасибо.
|