Форум -> Обо всём... -> Пользователь онлаин | Пользователь онлаин |
---|
rocksmart | Дата: 27.04.2008, в 16:15 | Сообщение №1 | СтарожилПользователь №: 261 Сообщений: 330
| Как сделать в модуле Top_user напротив пользователя что бы показывало на сайте он или нет
Код | 1
| function ShowList() {
global $prefix, $db, $module_name, $pagenum, $adirectory;
TopUsers();
list($grp_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(id) FROM ".$prefix."_groups"));
if ($grp_num == 0) {
OpenTable();
echo "<center><font class=\"option\"><b>"._TU_NOGROUPS."</b></font></center>";
CloseTable();
} else {
$pagenum = intval($_GET['pagenum']) ? $_GET['pagenum'] : "1";
$storynum = 50;
$offset = ($pagenum-1) * $storynum;
if ($pagenum) { $count = $offset+1; } else { $count = 1; }
$offset = intval($offset);
$storynum = intval($storynum);
$result = $db->sql_query("SELECT user_name, user_website, user_avatar, user_regdate, user_from, user_points FROM ".$prefix."_users ORDER BY user_points DESC LIMIT $offset, $storynum");
OpenTable();
echo "<center><font class=\"option\">"._TU_TOPLIST."</font></center><br>"
."<script language=\"JavaScript\" type=\"text/javascript\" src=\"javascripts/SortTable.js\"></script>"
."<script language=\"JavaScript\" type=\"text/javascript\" src=\"javascripts/ShowPic.js\"></script>"
."<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" class=\"sort\" id=\"sort_id\"><tr>"
."<th>"._RANK."</th><th>"._TU_LOGIN."</th><th>"._TU_REG."</th><th>"._TU_WEBSITE."</th>"
."<th>"._TU_LOCALITYLANG."</th><th>"._TU_POINTS."</th><th>Online</th></tr>";
while (list($pseudo, $website, $avatar, $regdate, $country, $score) = $db->sql_fetchrow($result)) {
$avatar = ($avatar && file_exists("".$adirectory."/".$avatar."")) ? "".$adirectory."/".$avatar."" : "".$adirectory."/00.gif";
echo "<tr class=\"bgcolor1\"><td height=\"20\" align=\"center\">$count</td>"
."<td height=\"20\" OnMouseOver=\"PicDivShow('".$avatar."');\" OnMouseOut=\"PicDivHide();\"><a href=\"index.php?name=Account&op=info&uname=$pseudo\" title=\""._TU_VIEWPROFIL."\">$pseudo</a></td>";
preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/", $regdate, $datetime);
$user_regdate = "".$datetime[3].".".$datetime[2].".".$datetime[1]."";
echo "<td height=\"20\" align=\"center\">".$user_regdate."</td>"
."<td height=\"20\" align=\"center\">";
if ($website == "") {
echo "</td>";
} else {
echo "<a href=\"$website\" target=\"_blank\" title=\""._TU_VISITSITE."\"><img src=\"images/blocks/Home.gif\" border=\"0\" alt=\""._TU_VISITSITE."\"></a></td>";
}
echo "<td height=\"20\">".cutstr($country, 40)."</td>"
."<td height=\"20\" align=\"center\">$score</td>";
$count++;
if($f_user !=""){
if($uname!=""){echo"<td height=\"20\">на сайте</td>";}else{echo"<td height=\"20\"></td>";}
}
}
echo "</tr></table>";
CloseTable();
list($numstories) = $db->sql_fetchrow($db->sql_query("SELECT Count(user_id) FROM ".$prefix."_users"));
$numpages = ceil($numstories / $storynum);
num_page($module_name, $numstories, $numpages, $storynum, "op=ShowList&");
}
foot();
} |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно rocksmart 27.04.2008 г. в 16:16:15 |
| | | Sunvas | Дата: 27.04.2008, в 16:22 | Сообщение №2 | ПрофиПользователь №: 181 Сообщений: 552
| | | rocksmart | Дата: 27.04.2008, в 16:34 | Сообщение №3 | СтарожилПользователь №: 261 Сообщений: 330
| надо сделать не могу сообразить
Код | 1
| $result = $db->sql_query("SELECT uname, guest, module, UNIX_TIMESTAMP(now())-time AS time FROM ".$prefix."_session ORDER BY uname");
while (list($uname, $guest, $module, $time) = $db->sql_fetchrow($result)) {
if($uname==$pseudo){$n="на сайте";}
elseif ($uname==0){$n="нет";}
}
echo "<td height=\"20\">$n</td>"; |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно rocksmart 27.04.2008 г. в 16:35:20 |
| | Serg_pnz | Дата: 27.04.2008, в 19:37 | Сообщение №4 | АдминистраторПользователь №: 1 Сообщений: 2242
| rocksmart, просто проверяй есть ли в таблице сессий запись про юзера. если есть, значит на сайте. (посмотри как в SSDF сделана проверка кто читает тему, а тебе надо просто наличие присутствия юзера в таблице) | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
| | rocksmart | Дата: 28.04.2008, в 08:36 | Сообщение №5 | СтарожилПользователь №: 261 Сообщений: 330
| Serg_pnz, где можно почитать как запросы делать к базе, а то любое написание новой функции упираеться в базу(в этом я ни черта не понимаю)
Вот твой запрос на форуме
Код | 1
| $result3 = $db->sql_query("SELECT t1.uname, t1.guest, t1.url, t2.user_id, t2.user_name, t3.user_moder FROM ".$prefix."_session AS t1, ".$prefix."_users AS t2, ".$prefix."_forums_users AS t3 WHERE t1.uname = t2.user_name AND t2.user_id = t3.user_id AND t1.url Like '/index.php?name=$module_name&op=showtopic&id=$tid%' AND t1.guest !=1");
if ($db->sql_numrows($result3) > 0) {
echo "<tr><td class=\"bgcolor1\" colspan=\"2\">"._TREAD.": ";
$data = $db->sql_fetchrowset($result3);
for($i = 0, $c = $db->sql_numrows($result3); $i < $c; $i++) {
if ($data[$i]['guest'] == 2 && $data[$i]['user_moder'] == 2) {
$utitle = _AUTHOR;
$spanstyle = "style=\"color: red;\"";
} elseif ($data[$i]['guest'] == 0) {
$utitle = _USER;
$spanstyle = "";
}
echo "<a href=\"index.php?name=Account&op=".check_uinf()."=".$data[$i][0]."\"><span ".$spanstyle." title=\"".$utitle."\">".$data[$i][0]."</span></a>";
if(($i+1) != $c) {
echo ", ";
} |
|
| | rocksmart | Дата: 28.04.2008, в 12:35 | Сообщение №6 | СтарожилПользователь №: 261 Сообщений: 330
| Serg_pnz, вот написал из твоего кода теперь показывает только почему то показывает что все не в онлаине
Код | 1
| $result = $db->sql_query("SELECT t1.user_name, t1.user_website, t1.user_avatar, t1.user_regdate, t1.user_from, t1.user_points, t2.uname FROM ".$prefix."_session AS t2 , ".$prefix."_users AS t1 ORDER BY t1.user_points=user_points DESC LIMIT $offset, $storynum");
OpenTable();
echo "<center><font class=\"option\">"._TU_TOPLIST."</font></center><br>"
."<script language=\"JavaScript\" type=\"text/javascript\" src=\"javascripts/SortTable.js\"></script>"
."<script language=\"JavaScript\" type=\"text/javascript\" src=\"javascripts/ShowPic.js\"></script>"
."<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" class=\"sort\" id=\"sort_id\"><tr>"
."<th>"._RANK."</th><th>"._TU_LOGIN."</th><th>"._TU_REG."</th><th>"._TU_WEBSITE."</th>"
."<th>"._TU_LOCALITYLANG."</th><th>"._TU_POINTS."</th><th>Online</th></tr>";
while (list($pseudo, $website, $avatar, $regdate, $country, $score,$name) = $db->sql_fetchrow($result)) {
$avatar = ($avatar && file_exists("".$adirectory."/".$avatar."")) ? "".$adirectory."/".$avatar."" : "".$adirectory."/00.gif";
echo "<tr class=\"bgcolor1\"><td height=\"20\" align=\"center\">$count</td>"
."<td height=\"20\" OnMouseOver=\"PicDivShow('".$avatar."');\" OnMouseOut=\"PicDivHide();\"><a href=\"index.php?name=Account&op=info&uname=$pseudo\" title=\""._TU_VIEWPROFIL."\">$pseudo</a></td>";
preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/", $regdate, $datetime);
$user_regdate = "".$datetime[3].".".$datetime[2].".".$datetime[1]."";
echo "<td height=\"20\" align=\"center\">".$user_regdate."</td>"
."<td height=\"20\" align=\"center\">";
if ($website == "") {
echo "</td>";
} else {
echo "<a href=\"$website\" target=\"_blank\" title=\""._TU_VISITSITE."\"><img src=\"images/blocks/Home.gif\" border=\"0\" alt=\""._TU_VISITSITE."\"></a></td>";
}
if($pseudo==$name){$n="онлайн";}elseif($name== 0){$n="offline";}
echo "<td height=\"20\">".cutstr($country, 40)."</td>"
."<td height=\"20\" align=\"center\">$score</td>"
."<td height=\"20\">$n</td>";
$count++;
} |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно rocksmart 28.04.2008 г. в 12:50:02
Прикрепленные файлы: |
| | rocksmart | Дата: 28.04.2008, в 14:29 | Сообщение №7 | СтарожилПользователь №: 261 Сообщений: 330
| Меня забыли - дайте совет |
| | Serg_pnz | Дата: 28.04.2008, в 15:17 | Сообщение №8 | АдминистраторПользователь №: 1 Сообщений: 2242
| rocksmart, всё, что ты написал - в топку. Неоптимально. /*это моё "имхо"*/
Короче перед выводом списка пользователей делаем массив
Код | 1
| $result = $db->sql_query("SELECT uname FROM ".$prefix."_session WHERE guest=1");
while(list($uname) = $db->sql_fetchrow($result)) {
$mass1[$uname] = 1;
} |
теперь, если $mass1[имя_при_построении_списка]==1 , то юзер на сайте
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно Serg_pnz 28.04.2008 г. в 15:19:00 | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
| | rocksmart | Дата: 28.04.2008, в 17:07 | Сообщение №9 | СтарожилПользователь №: 261 Сообщений: 330
| Да что то не выводит(да и хрен с ним)Тупо весь день потерял.
Я решил сделать при просмотре профиля в модуле Account чтобы выводило онлаин и вставил после этого
Код | 1
| echo "</td></tr><tr><td>"._INTERESTS.":</td><td>";
if ($userinfo['user_interests'] != "") {
echo "".$userinfo['user_interests']."";
} else {
echo "<i>"._NO_INFO."</i>";
}
echo "</td></tr><tr><td>"._SIGNATURE.":</td><td>";
if (bb_decode($userinfo['user_sig']) != "") {
echo "".bb_decode($userinfo['user_sig'])."";
} else {
echo "<i>"._NO_INFO."</i>";
} |
вот это
Код | 1
| $result = $db->sql_query("SELECT uname, guest, module, UNIX_TIMESTAMP(now())-time AS time FROM ".$prefix."_session ORDER BY uname");
while (list($uname, $guest, $module, $time) = $db->sql_fetchrow($result)) {
if ($uname == "".$user_name."") {
echo "<font class=\"option\">Online</font>";
} else {echo "";}} |
Вроде показывает нормально.
По идее есть ведь блок ,но я стараюсь много блоков не выводить на страницу. Долго грузиться
Прикрепленные файлы: |
| | | Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
|
|