[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с foreach
Ром@шка
Здравствуйте. Весь вечер билась, но так и не поняла в чём загвоздка.

Имеется мониторинг (приложила скриншот).

Задумка такая: справа в столбике - зарегистрированые пользователи, слева - игроки, которые в данный момент играют на сервере.
Цель чтобы при совпадении Ника пользователя сайта с ником одного из играющих - статус пользователя менялся.

Например. Мой ник Mia, я под ним зарегистрирована и под ним же вошла в игру - ник в правой колонке засветился зелёным.


Теперь суть проблемы (Мониторинг LGSL):
По переменной $player['name'] из кэша, находящегося в БД в строчку выводится список ников: [INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia

Сама переменная создаётся кодом:


foreach ($server['p'] as $player_key => $player)
{}


Для того чтобы проверять есть ли такой же ник среди зарегистрированых есть следующая функция:


if (strpos($player['name'], $array['nickname']) !== FALSE){
echo"В игре";
}


Проблема заключается в том, что в правой колонке со статусом "В игре" отображается только один игрок - тот, который на последнем месте по счёту. На скриншоте я последняя и отображаюсь как "В игре", но игрок с ником roma4444 также присутствует на сервере, но он отображается как "Вне системы"

Подскажите пожалуйста как сделать так, чтобы сканировался не только последний ник, а все :)



Спустя 20 минут, 11 секунд (24.07.2012 - 22:48) rooor написал(а):
могу предположить, что проверка проходит по последнему ключу $array['nickname'], поэтому надо перебрать этот массив
foreach($array['nickname'] as $v)
{
if (strpos($player['name'], $v) !== FALSE){
echo"В игре";
}
}

Спустя 8 минут, 8 секунд (24.07.2012 - 22:56) Ром@шка написал(а):
Именно так и происходит. скорее наоборот по name т.к. он в кэше

Спустя 2 минуты, 4 секунды (24.07.2012 - 22:58) rooor написал(а):
а можно показать весь код проверки, а не кусками?

Спустя 3 минуты, 17 секунд (24.07.2012 - 23:02) kamanch написал(а):
Цитата
строчку выводится список ников: [INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia

Мне вот это вообще вот так blink.gif
Это движек какой-то, и там такая реализация, или же это ты так сама сделала?
Зачем усложнять себе задачу, загоняя данные в строку, а потом эту строку обратно парсить?
Список ников сразу в массив, и его уже проходить поэлемнетно

Спустя 5 минут, 44 секунды (24.07.2012 - 23:07) Ром@шка написал(а):
это движок

Спустя 3 минуты, 27 секунд (24.07.2012 - 23:11) Ром@шка написал(а):
Содержимое details.php


//-------------------------------------------------------------------------------------------------- ----------+
// SHOW THE PLAYERS


$output .= "
<div style='margin:auto; overflow:auto; text-align:left; padding:10px'>"
;

if (!$server['p'] || !is_array($server['p']))
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto'>
<tr style='"
.lgsl_bg(FALSE)."'>
<td>
{$lgsl_config['text']['npi']} </td>
</tr>
</table>"
;
}
else
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto;box-shadow: 0px 0px 10px black;'>
<tr style='"
.lgsl_bg(FALSE)."'>";


//-----------------------------------
foreach ($fields as $field)
{
$field = ucfirst($field);

if ($field == 'Name') { $field = 'Игрок [нажмите на ник для просмотра совпадений]'; }
elseif ($field == 'Ping') { $field = 'Пинг'; }
elseif ($field == 'Score') { $field = 'Фраги'; }
elseif ($field == 'Kills') { $field = 'Убил'; }
elseif ($field == 'Deaths') { $field = 'Умер'; }
elseif ($field == 'Squad') { $field = 'Отряд'; }
elseif ($field == 'Team') { $field = 'Комманда'; }
elseif ($field == 'Time') { $field = 'Время'; }

$output .= "
<td class='forumheader3' style='color:white;text-shadow: 0px 0px 7px;padding:5px'> <b>
{$field}</b> </td>";
}

$output .= "
</tr>"
;

foreach ($server['p'] as $player_key => $player)
{
$output .= "
<tr>"
;


foreach ($fields as $field)
{

include "plugins/players/bfgc_clanlist.txt";


$output .= "<td style='box-shadow: 0px 0px 2px black;'>{$player[$field]}</td>";
}
$output .= "
</tr>"
;
}

$output .= "
</table>"
;
}

$output .= "
</div>"
;

//-------------------------------------------------------------------------------------------------- ----------+


Содержимое index.php


<?php
include_once("database.php");

$ql = mysql_query("SELECT * FROM users WHERE id='$id'");
$ar = mysql_fetch_array($ql);
$avatar = $ar['avatar'];
$usertype = $ar['usertype'];

//-------------------------------------------------------------------------------------------------- ----------+
global $output, $lgsl_server_id;

$output = "";

$s = isset($_GET['s']) ? $_GET['s'] : "";

if (is_numeric($s)) { $lgsl_server_id = $s; require "monitor/details.php"; }

echo $output;

unset($output);
//-------------------------------------------------------------------------------------------------- ----------+



$timer = time();
$fres = mysql_query("SELECT * FROM users");
$array = mysql_fetch_array($fres);



do{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];



if($resTime < 300){
$stat = "playing";
$stat2 = "online";
}else if (strpos($player['name'], $array['nickname']) !== FALSE){
$stat = "online";
}else{
$stat = "offline";
$stat2 = "offline";
}

if($stat == playing){
echo "В сети";
}else if($stat == online){
echo "В игре";
}else{
echo "Вне системы";
}



}

while ($array = mysql_fetch_array($fres));
?>

Спустя 6 минут, 50 секунд (24.07.2012 - 23:18) rooor написал(а):
if($stat == playing){
echo "В сети";
}else if($stat == online){

так и должно быть? playing и online константы?

ЗЫ: не нашёл здесь кода из первого поста

Спустя 4 минуты, 25 секунд (24.07.2012 - 23:22) Ром@шка написал(а):
код из 1-го поста разбросан по 2-м файлам.
1-я часть в details.php
2-я часть в index.php


playing и online константы да. так и должны. playing отвечает за то что пользователь на сайте, а онлайн за то что в игре

Спустя 6 минут, 15 секунд (24.07.2012 - 23:28) rooor написал(а):
$timer = time();
$fres = mysql_query("SELECT * FROM users");
while ($array = mysql_fetch_array($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];

if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
elseif (strpos($player['name'], $array['nickname']) !== FALSE)
{
$stat = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}

if($stat == playing)
{
echo "В сети";
}
elseif($stat == online)
{
echo "В игре";
}
else
{
echo "Вне системы";
}
}

Спустя 5 минут, 33 секунды (24.07.2012 - 23:34) Ром@шка написал(а):
а что изменится?)) Просто чтобы я потом не тупила. вижу появился while

Спустя 2 минуты, 52 секунды (24.07.2012 - 23:37) rooor написал(а):
может сначала попробуешь код применить который я дал?
а дальше уже поговорим)

Спустя 5 минут, 24 секунды (24.07.2012 - 23:42) rooor написал(а):
Цитата
Просто чтобы я потом не тупила. вижу появился while

он там и был, посмотри внимательней))

вот тут ты загоняешь в $array последнюю строку запроса
$fres = mysql_query("SELECT * FROM users");
$array = mysql_fetch_array($fres);

и вот что делаешь с ним дальше:
do{
........
}
while ($array = mysql_fetch_array($fres));


UPD: вместо mysql_fetch_array используй mysql_fetch_assoc

Спустя 6 минут, 24 секунды (24.07.2012 - 23:49) Ром@шка написал(а):
неа. то же самое. ищет только по последнему ключу

Спустя 3 минуты, 49 секунд (24.07.2012 - 23:52) rooor написал(а):
Что мне тут не нравится.... если $stat = "playing";
то может и проверять надо if($stat == "playing") ?

Спустя 5 минут, 10 секунд (24.07.2012 - 23:58) Ром@шка написал(а):
с этим всё в порядке. ничего не изменилось

Спустя 2 минуты, 29 секунд (25.07.2012 - 00:00) Ром@шка написал(а):
Суть проблемы в другом. foreach - делает копию массива, но как сделать связку грубо говоря "Если в этой копии есть такой же ник как на сайте, то подсвечивать ник на сайте как онлайн"

т.к. в данный момент идёт такая фигня: "Если последний ник из этой копии совпадает с одним из ников на сайте, то подсвечивать этот один ник на сайте как онлайн"

А копией массива как раз и является вот это:

Цитата
По переменной $player['name'] из кэша, находящегося в БД в строчку выводится список ников: [INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia

Спустя 1 минута, 50 секунд (25.07.2012 - 00:02) rooor написал(а):
blink.gif
покажи как сейчас выглядит код, который на первой странице

Спустя 50 секунд (25.07.2012 - 00:03) Ром@шка написал(а):

$timer = time();
$fres = mysql_query("SELECT * FROM users");
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];

if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
else if (strpos($player['name'], $array['nickname']) !== FALSE)
{
$stat = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}

echo "

<li id='comcenter-2832660339291615977' class='comcenter-friend-item comcenter-friend comcenter-friend-$stat2 ' rel='2832660339291615977'>
<div
class='comcenter-friend-draggable'></div>
<div
class='comcenter-avatar'>
<div
rel='2832660339291615977' class='base-avatar-container base-avatar-size-small'>

<div
class='base-avatar-status-overlay base-avatar-status-overlay-$stat'>
<img
src='profile/avatars/".$avatar."' width='22' height='22' onerror=\"this.src='profile/avatars/noAvatar.png'\">
</div></div></div>
<div class='comcenter-username comcenter-username-idle'>
<a class='comcenter-username-link' href='profile.php?id="
.$array['id']."' >".$array['tag']."".$array['nickname']."

</a>
<div class='comcenter-username-away'>
"
;


if($stat == "playing")
{
echo "В сети";
}
else if($stat == "online")
{
echo "В игре";
}
else
{
echo "Вне системы";
}
}

Спустя 7 минут, 4 секунды (25.07.2012 - 00:10) Ром@шка написал(а):
что-то голова совсемне варит уже((
пойду спать, завтра ещё пошаманю и напишу что вышло (или не вышло smile.gif )

Спустя 4 минуты, 47 секунд (25.07.2012 - 00:15) Игорь_Vasinsky написал(а):
Цитата
else if

работает?

Спустя 53 секунды (25.07.2012 - 00:15) Ром@шка написал(а):
работает

Спустя 2 минуты, 2 секунды (25.07.2012 - 00:17) rooor написал(а):
да переделыывай всё... нафига ники в строку пихать?
$player['name'] = "[INF]Safron -<<Wicked>>- HunDarkkiller PRiME shocktendo64 DFM. Allc [INF]Sashka [INF]ZRM f3ya [INF]GREEK Gerv roma4444 |SW|LoMaChEk Mia";
if (strpos($player['name'], $array['nickname']) !== FALSE)
{
echo "В игре";
}

при таком раскладе часть ника тоже будет считаться истиной, например roma4444 и roma

Спустя 4 минуты, 8 секунд (25.07.2012 - 00:22) Игорь_Vasinsky написал(а):
не медленней elseif ? стаётся что - да.

Спустя 5 минут, 48 секунд (25.07.2012 - 00:27) Ром@шка написал(а):
я не разбираюсь особо медленный или нет)))


я не знаю нифига их пихать. движок сделан так что ники в базу не сохраняются ( тоже реализовать пыталась но не вышло), они только в массив идут

Спустя 3 минуты, 12 секунд (25.07.2012 - 00:31) rooor написал(а):
Цитата
движок сделан так что ники в базу не сохраняются

:blink: а что тогда берётся отсюда? и, самое главное - нафига?))
$fres = mysql_query("SELECT * FROM users");

Спустя 2 минуты, 46 секунд (25.07.2012 - 00:33) Ром@шка написал(а):
оттуда берется время последнего обновления страницы для того чтобы определять пользователь на сайте или нет.


Спустя 2 минуты, 54 секунды (25.07.2012 - 00:36) Игорь_Vasinsky написал(а):
strpos() не прокатит, preg_match() юзай, тяжко конечно что в цикле, но так не вижу способа.

Спустя 1 минута, 8 секунд (25.07.2012 - 00:37) rooor написал(а):
как он определяет какой именно пользователь?))
вы вообще в курсе что этот код делает?
else if (strpos($player['name'], $array['nickname']) !== FALSE)
{
$stat = "online";
}

в $array['nickname'] должен быть ник, взятый из базы, и этот ник из базы проверяется в строке $player['name'], если в базе нет ников, что тогда он тут проверяет?

Спустя 5 минут, 36 секунд (25.07.2012 - 00:43) Ром@шка написал(а):
в базе есть ники пользователей зарегистрированых на сайте, но ники игроков, находящихся в данный момент на сервере в базу не сохраняются

Спустя 1 минута, 48 секунд (25.07.2012 - 00:45) rooor написал(а):
ну так а что же вы от скрипта хотите? вы зарегистрированы на сайте и вас он правильно определяет... ещё раз повторю - откуда в $array['nickname'] возьмутся ники тех, кого нет в базе? их просто нет, поэтому они и не в онлайне

Спустя 8 часов, 24 минуты, 13 секунд (25.07.2012 - 09:09) Ром@шка написал(а):
но в масиве то они есть. ники тех кто в игре есть в $player['name'], но они как я поняла идут в базу в кэшированом виде и обновляются при обновлении страницы. Собственно поэтому и проверяем на наличие совпадений одной из ников с никами из $array['nickname']

Спустя 22 минуты, 5 секунд (25.07.2012 - 09:31) kamanch написал(а):
$player_array = explode(' ',$player['name']); // получаем массив игроков
$nikname_array = explode(' ',$array['nickname']); // получаем массив ников
$player_online_array = array_intersect($player_array, $nikname_array); // пересечение этих массивов

Спустя 24 минуты, 42 секунды (25.07.2012 - 09:56) Ром@шка написал(а):
h.n.81 в вашем случае все пользователи из правой колонке начинают светиться как "В игре"

Спустя 8 минут, 17 секунд (25.07.2012 - 10:04) kamanch написал(а):
Значит, ты не разабралась со входными данными и неверно нам их тут дала.
Потому что:

$player['name'] = "player1 nik1 player2 nik2 player2 nik3 ";
$array['nickname'] = "nik1 nik2 nik3 nik4 nik5";
$player_array = explode(' ',$player['name']); // получаем массив игроков
$nikname_array = explode(' ',$array['nickname']); // получаем массив ников
$player_online_array = array_intersect($player_array, $nikname_array); // пересечение этих массивов

echo "<pre>";
print_r($player_online_array);
echo "</pre>";


Вывод:
Array
(
[1] => nik1
[3] => nik2
[5] => nik3
)

Спустя 12 минут (25.07.2012 - 10:16) Ром@шка написал(а):
За обработку игроков отвечает вот этот код. Может я в нем что не так поняла...


//-------------------------------------------------------------------------------------------------- ----------+
// SHOW THE PLAYERS


$output .= "
<div style='margin:auto; overflow:auto; text-align:left; padding:10px'>"
;

if (!$server['p'] || !is_array($server['p']))
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto'>
<tr style='"
.lgsl_bg(FALSE)."'>
<td>
{$lgsl_config['text']['npi']} </td>
</tr>
</table>"
;
}
else
{
$output .= "
<table cellpadding='4' cellspacing='2' style='margin:auto;box-shadow: 0px 0px 10px black;'>
<tr style='"
.lgsl_bg(FALSE)."'>";


//-----------------------------------
foreach ($fields as $field)
{
$field = ucfirst($field);

if ($field == 'Name') { $field = 'Игрок [нажмите на ник для просмотра совпадений]'; }
elseif ($field == 'Ping') { $field = 'Пинг'; }
elseif ($field == 'Score') { $field = 'Фраги'; }
elseif ($field == 'Kills') { $field = 'Убил'; }
elseif ($field == 'Deaths') { $field = 'Умер'; }
elseif ($field == 'Squad') { $field = 'Отряд'; }
elseif ($field == 'Team') { $field = 'Комманда'; }
elseif ($field == 'Time') { $field = 'Время'; }

$output .= "
<td class='forumheader3' style='color:white;text-shadow: 0px 0px 7px;padding:5px'> <b>
{$field}</b> </td>";
}

$output .= "
</tr>"
;

foreach ($server['p'] as $player_key => $player)
{
$output .= "
<tr>"
;


foreach ($fields as $field)
{

include "plugins/players/bfgc_clanlist.txt";


$output .= "<td style='box-shadow: 0px 0px 2px black;'>{$player[$field]}</td>";
}
$output .= "
</tr>"
;
}

$output .= "
</table>"
;
}

$output .= "
</div>"
;

//-------------------------------------------------------------------------------------------------- ----------+

Спустя 5 минут, 7 секунд (25.07.2012 - 10:21) Ром@шка написал(а):
Есть ещё вот такой код:

//--------------------------------------------------------------------------------------------------  ----------+

function lgsl_charset_detect($server)
{
if (!function_exists("mb_detect_encoding")) { return "AUTO"; }

$test = "";

if (isset($server['s']['name'])) { $test .= " {$server['s']['name']} "; }

if (isset($server['p']) && $server['p'])
{
foreach ($server['p'] as $player)
{
if (isset($player['name'])) { $test .= " {$player['name']} "; }
}
}


$charset = @mb_detect_encoding($server['s']['name'], "UTF-8, Windows-1252, ISO-8859-1, ISO-8859-15");

return $charset ? $charset : "AUTO";
}

//-------------------------------------------------------------------------------------------------- ----------+

function lgsl_charset_convert($server, $charset)
{
if (!function_exists("mb_convert_encoding")) { return $server; }

if (is_array($server))
{
foreach ($server as $key => $value)
{
$server[$key] = lgsl_charset_convert($value, $charset);
}
}

else
{
$server = @mb_convert_encoding($server, "UTF-8", $charset);
}

return $server;
}

//-------------------------------------------------------------------------------------------------- ----------+


находится в этом файле.

Может в нём что найдете, потому что я не особо там разобралась(

Спустя 1 час, 4 минуты, 10 секунд (25.07.2012 - 11:25) Xsfd написал(а):
Глянул коды и нашел функцию $server['p'], которая выводит из кэша всю информацию о игроках на сервере. Но если просто ткнуть ".$server['p']." в код - ты получишь на выходе слово Array поэтому делаем так:

Запускаем сериализацию:

$playerstr = serialize( $server['p'] );

и меняем

else if (strpos($player['name'], $array['nickname']) !== FALSE)

на

else if (strpos($playerstr, $array['nickname']) !== FALSE)


Потом меняем местами if и elseif чтобы первым делом проверялось кто в игре, а уж потом кто на сайте:

$playerstr = serialize( $server['p'] );
$timer = time();
$fres = mysql_query("SELECT * FROM users");
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];

if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}


Должно работать. Проверял у себя

Спустя 30 минут, 25 секунд (25.07.2012 - 11:56) Xsfd написал(а):
А вот со strpos что делать я не знаю. Ибо как было сказано ранее - будет выводить если даже часть ника присутствует в игре

Спустя 17 минут, 47 секунд (25.07.2012 - 12:14) Ром@шка написал(а):
Спасибо) Работает)

А вот со strpos и правда проблемка(((

Можно как нибудь сделать чтобы искало не по частям, а полный ник?

Спустя 2 часа, 8 минут, 31 секунда (25.07.2012 - 14:22) Ром@шка написал(а):
Подскажите ещё такая проблема.

Фенкция serialize выводит нечто подобное:

{s:4:"game";s:3:"IW4";s:4:"name";s:29:"BATTLEFRAME.RU |SD|HARD";s:3:"map";s:12:"mp_overgrown";s:7:"players";i:6;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"p";a:6:{i:0;a:3:{s:5:"score";s:3:"920";s:4:"ping";s:3:"135";s:4:"name";s:7:"Salomon";}i:1;a:3 :{s:5:"score";s:4:"3700";s:4:"ping";s:2:"39";s:4:"name";s:8:"Mucksudd";}i:2;a:3 :{s:5:"score";s:1:"0";s:4:"ping";s:3:"173";s:4:"name";s:4:"Mask";}i:3;a:3:{s :5:"score";s:1:"0";s:4:"ping";s:3:"138";s:4:"name";s:6:"SakhK2";}i:4;a:3: {s:5:"score";s:3:"600";s:4:"ping";s:3:"205";s:4:"name";s:7:"#26 Ale";}i:5;a:3:{s:5:"score";s:4:"2200";s:4:"ping";s:2:"15";s:4:"name";s:9:"NiKo70RUS";}}}

Как видно здесь есть и ники и название сервера.

Можно ли как нибудь на РНР реализовать чтобы отображалось на каком сервере находится игрок?

Спустя 29 минут, 6 секунд (25.07.2012 - 14:51) neadekvat написал(а):
Ром@шка, допустим, у тебя сериализованная строка хранится в $str. Тогда сделай так:

<?php
$str = '{s:4:"gam...';

$arr = unserailize($str);
print_r($arr);

Спустя 42 минуты, 34 секунды (25.07.2012 - 15:34) Ром@шка написал(а):
И что это даст?(( у меня вообще всё пропало(

Спустя 5 минут, 25 секунд (25.07.2012 - 15:39) neadekvat написал(а):
Ну, подумаешь, очепятался.
unserialize называется.

Спустя 1 минута, 54 секунды (25.07.2012 - 15:41) Ром@шка написал(а):
в слове unserialize были 2 буквы местами перепутаны)) Исправила, но результата 0.

Вообще я логики не понимаю. Зачем писать unserialize если мы писали serialize ?

Спустя 22 минуты, 26 секунд (25.07.2012 - 16:04) Ром@шка написал(а):
И можно ли вот из этого:

if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$stat = "playing";
$stat2 = "online";
}
else
{
$stat = "offline";
$stat2 = "offline";
}


Сделать сортировку чтобы сначала отображались online, под ними playing и offline ?

Спустя 8 минут, 33 секунды (25.07.2012 - 16:12) Xsfd написал(а):
mysql_query("SELECT * FROM users ORDER BY visit DESC,id");


это по статусу на сайте, а как туда статус онлайна на сервере прикрутить я не знаю)

Спустя 2 часа, 46 минут, 51 секунда (25.07.2012 - 18:59) Ром@шка написал(а):
Попыталась сделать, но не работает((


if ($stat == "online")
{
$ingame = "2";
}
else if ($stat == "playing")
{
$ingame = "1";
}
else
{
$ingame = "3";
}
$upGame = mysql_query("UPDATE users SET ingame='$ingame' WHERE id='$id_user'",$db);

Спустя 1 час, 54 минуты, 57 секунд (25.07.2012 - 20:54) neadekvat написал(а):
if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$db_stat = 1;
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$db_stat = 2;
$stat = "playing";
$stat2 = "online";
}
else
{
$db_stat = 3;
$stat = "offline";
$stat2 = "offline";
}

// Где ingame - числовое поле, обязательно. tinyint например
mysql_query("UPDATE users SET ingame=$db_stat WHERE id=$id_user", $db);


Достаем просто:
SELECT ... ORDER BY ingame ASC


Спустя 44 минуты, 51 секунда (25.07.2012 - 21:39) Ром@шка написал(а):
Одна загвоздка. Информация заносится лишь после того как сам игрок заёдет на сайт под своим логином и обновит страницу((( Как сделать чтобы всё автоматом заносилось?

Спустя 11 минут, 4 секунды (25.07.2012 - 21:50) neadekvat написал(а):
Ром@шка, что-то я не очень понял, в чем именно "загвоздка". Если я залогинился, то еще не считаюсь "в онлайне", для этого мне надо обновить страницу? Или что? Если так, то это тупо архитектурная ошибка. Вызывайте в скрипте авторизации скрипт изменения состояния и все.

Вообще, на самом деле, тебе стоило посмотреть, как делаются скрипты списков пользователей онлайн.

После авторизации может произойти только одно - меня сделают онлайн.
Если я нажму "Выйти" - скрипт может только поставить мне статус "офлайн".
А чтобы делать промежуточные вещи, да еще выводить данные другим пользователям, в базе данных сохраняют время авторизации и последней активности (обновления страницы, грубо говоря). И уже на основе этих данных вычисляют, онлайн я или уже офлайн (обычно офлайн - это 25 минут бездействия).

Спустя 6 минут, 16 секунд (25.07.2012 - 21:56) Ром@шка написал(а):
у меня в базе создано поле newtime в которую вносится время последнего посещения сайта пользователем. Потом оно сравнивается с текущим и если разница больше чем в 5 минут, то пользователь оффлайн, если же нет, то онлайн.

Целью же является создать ещё одно поле ingame в которое будет заноситься число статуса у пользователя в данный момент ($db_stat = 1,2,3;)


Но обновление вот этой части никак не хочет заноситься в базу

if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$db_stat = 1;
$stat = "online";
$stat2 = "online";
}


Спустя 7 минут, 59 секунд (25.07.2012 - 22:04) neadekvat написал(а):
Ром@шка, давай так. Тут уже много страниц и много текста.
Еще раз распиши подробно, что ты хочешь сделать. И у себя в голове уложишь, и мне расскажешь. А уж я со своей стороны не обижу и скажу, что в логике нужно выкинуть, а что заменить.

Спустя 10 минут, 36 секунд (25.07.2012 - 22:15) Ром@шка написал(а):
Давай я завтра напишу))) а то в голову связаная речь не идёт)))

Спустя 10 минут, 15 секунд (25.07.2012 - 22:25) neadekvat написал(а):
Цитата (Ром@шка @ 25.07.2012 - 23:15)
Давай я завтра напишу))) а то в голову связаная речь не идёт)))

Ну дак, дело твое.
Я завтра целый день в аэропорту буду торчать, если найду там вай-фай, то помогу. Если не найду - сдохну от скуки smile.gif

Спустя 2 минуты, 7 секунд (25.07.2012 - 22:27) Ром@шка написал(а):
Главное что помочь согласились) А время то найдется)

Спустя 11 часов, 9 минут, 28 секунд (26.07.2012 - 09:36) Ром@шка написал(а):
Вообщем идея такая (рассказываю по скриншоту)

Нужно чтобы справа в столбике игроки сортировались по статсусу: сначала идут те кто "Играет...", потом те кто "В сети", а за ними уже те кто "Вне системы".

Но у меня никак не выходит т.к. статусы "В сети" и "Вне системы" сортируются при выводе из базы данных, а статус "Играет.." просчитывается с помощью if, поэтому максимум выходит сделать такой порядак: "В сети", "Вне системы", "Играет".

код следующий:


$playerstr = serialize( $server_list );

$timer = time();
$fres = mysql_query("SELECT * FROM users ORDER BY ingame DESC,id");
while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];

if (strpos($playerstr, $array['nickname']) !== FALSE)
{
$db_stat = 2;
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$db_stat = 1;
$stat = "playing";
$stat2 = "online";
}
else
{
$db_stat = 0;
$stat = "offline";
$stat2 = "offline";
}

// Где ingame - числовое поле, обязательно. tinyint например
mysql_query("UPDATE users SET ingame=$db_stat WHERE id=$id_user", $db);

echo "///ЗДЕСЬ HTML КОД ВЫВОДА///";


if($stat == "playing")
{
echo "<font color='steelblue'>В сети</font>";
}
else if($stat == "online")
{
echo "<font color='#5bb138'>Играет в Modern Warfare</font>";
}
else
{
echo "Вне системы";
}

}


Спустя 5 часов, 4 минуты, 8 секунд (26.07.2012 - 14:41) neadekvat написал(а):
Хм, видать, я тоже отоспался, потому что теперь понял, что происходит.

Значит, смотри. В таком случаи тебе перед тем, как выводить сортированные данные, надо расставить соответствующие значения у пользователей. Т.е. так:

Таблица пользователей:
users
user_id | login | status (tinyiny)
Где status может быть 1 (В игре), 2 (На сайте), 3 (Офлайн)

Плюс, как я смотрю, у тебя там откуда-то еще берутся данные о том, кто сейчас играет и когда он делал последний раз. Это и используем. Слегка меняем твой код:
$arr - массив с данными от самой игры (я где-то выше в сериализованном формате видел)

foreach($arr as $user)
{
// Здесь проверка, которая у тебя сейчас ниже, после этой проверки
// у нас есть переменная $db_stat

mysql_query("UPDATE users SET status = $db_stat WHERE login = {$user['name']}");
}


// И уже затем то, что у тебя в принципе есть, т.е. вывод данных.
SELECT ... ORDER BY status ASC


P.S.
Две большие просьбы:
1. Для начала надо понять, что я писал с привычными мне названиями переменных и пр., т.е. тебе нельзя просто взять и скопировать это, тебе надо изменить код под себя.
2. Самое главное - включи голову, если что-то не понимаешь - сначала попробуй посмотреть на это с других сторон, осознать, что до тебя пытались донести. Не надо сразу бежать с криками, что ничего непонятно.

2P.S.
Есть такая вероятность, что до позднего вечера я больше не отвечу, ибо что-то не вижу я в Шереметьево розеток для ноута. Благо хоть вай-фай есть.

Спустя 3 часа, 32 минуты (26.07.2012 - 18:13) Ром@шка написал(а):
Хоть убей не поняла :D


";
$playerstr = serialize( $server_list );
$servstr = serialize( $server_list );

$timer = time();
$fres = mysql_query("SELECT * FROM users ORDER BY ingame DESC,id");
while (
$array = mysql_fetch_assoc($fres))
{

$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
foreach(
$server['p'] as $user)
{
if (strpos(
$playerstr, $array['nickname']) !== FALSE)
{

$db_stat = 2;
$stat = "online";
$stat2 = "online";
}
else if(
$resTime < 300)
{

$db_stat = 1;
$stat = "playing";
$stat2 = "online";
}
else
{

$db_stat = 0;
$stat = "offline";
$stat2 = "offline";
}

mysql_query("
UPDATE users SET ingame = $db_stat WHERE id=$id_user");
}
if (
$array['dolznost'] == "Лидер клана")
{
$cl = "<img src='modules/img/cl.png' style='width:10px;' title='Лидер клана ".$array['team']."'>";}
else
{
$cl = "";}


echo "



Цитата
у тебя там откуда-то еще берутся данные о том, кто сейчас играет и когда он делал последний раз


Берется отсюда:
if (strpos($playerstr, $array['nickname']) !== FALSE)

где $playerstr это сериализованый массив, а $array['nickname'] это ник пользователя на сайте

В этом вся и загвоздка что изза этого IF не полуается в базу даннх занести статус "В игре" (в данном случае цифру 1)

Спустя 4 минуты, 12 секунд (26.07.2012 - 18:17) neadekvat написал(а):
Да, действительно не поняла.
Это день сегодня такой что ль, никто ни во что не вкуривает.

Цитата (Ром@шка @ 26.07.2012 - 19:13)
Берется отсюда:

Нет, здесь они уже используются.

Я про это:
$playerstr
Откуда-то же он взялся? Вот с ним и надо работать (тот foreach что я показал). Только работать с ним надо как с массивом, не надо сериализовать.

Спустя 2 часа, 40 минут, 6 секунд (26.07.2012 - 20:57) Ром@шка написал(а):
всё равно не сортирует по онлайну(( блин да чтож такое? Куда этот foreach ткнуть то? Маловато у меня мозгов для этого дела biggrin.gif

Спустя 3 часа, 35 минут, 7 секунд (27.07.2012 - 00:32) neadekvat написал(а):
Вот смотри, у тебя есть переменная $playerstr. Откуда она берется?

Спустя 10 часов, 15 минут, 55 секунд (27.07.2012 - 10:48) Ром@шка написал(а):
$playerstr = serialize( $server_list );


Где server_list это массив, записаный в БД как КЭШ (файл который это делает я раньше где-то выкладывала)

Спустя 4 часа, 21 минута, 7 секунд (27.07.2012 - 15:09) neadekvat написал(а):
Ну вот, значит, у тебя уже есть готовый массив с именами пользователей и их последней активности?

Спустя 1 час, 19 минут, 16 секунд (27.07.2012 - 16:28) Ром@шка написал(а):
$server_list выдаёт много всякой фигни:

a:12:{i:0;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip";s :13:"80.77.174.251";s:6:"c_port";s:5:"28960";s:6:"q_port";s:5:"28960";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"1& quot;;s:4:"zone";s:1:"1";s:7:"comment";s:23:"BATTLEFRAME.RU |SD|HARD";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game&quo t;;s:3:"IW4";s:4:"name";s:23:"BATTLEFRAME.RU |SD|HARD";s:3:"map";s:10:"mp_complex";s:7:"players";i:6;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:18:"BFGC Shield System";s:6:"_email";s:14:"bfgc@gmail.com";s:9:"_location";s:8:&qu ot;RUS Tver";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:22:"http://battleframe.ru/";s:14:&quo t;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn  ame";s:10:"mp_complex";s:8:"protocol";s:3:"144";s:21:"scr_game_allowkillcam  ";s:1:"1";s:15:"scr_team_fftype";s:1:"2";s:17:"sv_allowanonym  ous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1:  "1";s:11:"sv_hostname";s:23:"BATTLEFRAME.RU |SD|HARD";s:10:"sv_maxping";s:3:"450";s:10:"sv_maxrate";s:5:"10000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:6:{i:0;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:3:"164";s:4:"name";s:7:"|SW|Cin";}i:1;a:3  :{s:5:"score";s:1:"0";s:4:"ping";s:2:"74";s:4:"name";s:11:"[INF]Safron";}i:2  ;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"68";s:4:"name";s:14:"P.P.P.P.P.P.P'";}  i:3;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"33";s:4:"name";s:11:"DFM.lol man";}i:4;a:3:{s:5:"score";s:3:"100";s:4:"ping";s:2:"95";s:4:"name";s:13:"Winnie Pooh U";}i:5;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"50";s:4:"name";s:8:"-=Matt=-";}}}i:1;a:5:{s:1:"b";a:7:{s:4:"typ  e";s:13:"callofdutymw2";s:2:"ip";s:15:"212.107.236.155";s:6:"c_port";s:5:"28961";s:6:"q_port";s:5:"28961&a mp;q uot;;s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"4& amp; quot;;s:4:"zone";s:1:"1";s:7:"comment";s:31:"RUSWARS.COM[RUS7​0]​ HARD#1";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game"  ;s:3:"IW4";s:4:"name";s:29:"WWW.RUSWARS.COM[RUS70] HARD#1";s:3:"map";s:12:"mp_overgrown";s:7:"players";i:6;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"18";s:6:"_admin";s:5:"romis&am p;qu ot;;s:6:"_email";s:17:"romis@sibmail.com";s:9:"_location";s:9:"RUS   Tomsk";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:18:"http://ruswars.com";s:14:"ai  w_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:3:"war";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn  ame";s:12:"mp_overgrown";s:8:"protocol";s:3:"144";s:21:"scr_g  ame_allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1:  "1";s:11:"sv_hostname";s:29:"WWW.RUSWARS.COM[RUS70] HARD#1";s:10:"sv_maxping";s:3:"250";s:10:"sv_maxrate";s:6:"150000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"1";s:27:"sv_privateclientsforclients&am p;qu ot;;s:1:"1";}s:1:"p";a:6:{i:0;a:3:{s:5:"score";s:3:"920";s:4:"ping";s:3:"135";s:4:"name";s:7:"Salomon";}i:1;a:3  :{s:5:"score";s:4:"3700";s:4:"ping";s:2:"39";s:4:"name";s:8:"Mucksudd";}i:2;a:3  :{s:5:"score";s:1:"0";s:4:"ping";s:3:"173";s:4:"name";s:4:"Mask";}i:3;a:3:{s  :5:"score";s:1:"0";s:4:"ping";s:3:"138";s:4:"name";s:6:"SakhK2";}i:4;a:3:  {s:5:"score";s:3:"600";s:4:"ping";s:3:"205";s:4:"name";s:7:"#26 Ale";}i:5;a:3:{s:5:"score";s:4:"2200";s:4:"ping";s:2:"15";s:4:"name";s:9:"NiKo70RUS";}}}i:2;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:  "ip";s:14:"109.171.65.246";s:6:"c_port";s:5:"28961";s:6:"q_port";s:5:"2896  1";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"5& amp; quot;;s:4:"zone";s:1:"1";s:7:"comment";s:31:"RUSWARS.COM[RUS7​0]​ HARD#3";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game"  ;s:3:"IW4";s:4:"name";s:29:"WWW.RUSWARS.COM[RUS22] HARD#3";s:3:"map";s:10:"mp_compact";s:7:"players";i:16;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"18";s:6:"_admin";s:4:"BRAT& ;quo t;;s:6:"_email";s:17:"romis@sibmail.com";s:9:"_location";s:11:"RUS   Barnaul";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:25:"http://mf2seversk.ucoz.ru";s:14:& amp; quot;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:3:"war";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn  ame";s:10:"mp_compact";s:8:"protocol";s:3:"144";s:21:"scr_game_allowkillcam  ";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1:  "1";s:11:"sv_hostname";s:29:"WWW.RUSWARS.COM[RUS22] HARD#3";s:10:"sv_maxping";s:3:"200";s:10:"sv_maxrate";s:6:"150000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:16:{i:0;a:3:{s:5:"score";s:3:"200";s:4:"ping";s:2:"88";s:4:"name";s:5:"aiser";}i:1;a:3:{s  :5:"score";s:4:"1600";s:4:"ping";s:2:"76";s:4:"name";s:14:"KiLLeR*[V*I*P]";}  i:2;a:3:{s:5:"score";s:3:"500";s:4:"ping";s:2:"79";s:4:"name";s:10:"b2w | VLAD";}i:3;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"23";s:4:"name";s:5:"Dimon";}i:4;a:3:{s  :5:"score";s:3:"300";s:4:"ping";s:2:"33";s:4:"name";s:10:"Demonelius";}i:5;a:3:{s:5:"score";s:1:"0";s:4:"ping";s:2:"83";s:4:"name";s:7:"smO_oke";}i:6;a:3:  {s:5:"score";s:3:"600";s:4:"ping";s:2:"36";s:4:"name";s:6:"Grifon";}i:7;a:3:{  s:5:"score";s:3:"300";s:4:"ping";s:2:"39";s:4:"name";s:7:"kamen75";}i:8;a:3:  {s:5:"score";s:3:"100";s:4:"ping";s:2:"63";s:4:"name";s:7:"~x~X~x~";}i:9;a:3:  {s:5:"score";s:3:"300";s:4:"ping";s:3:"209";s:4:"name";s:10:"Specialist";}i:10;a:3:{s:5:"score";s:3:"300";s:4:"ping";s:3:"158";s:4:"name";s:7:"Tempano";}i:11;a:  3:{s:5:"score";s:3:"200";s:4:"ping";s:3:"153";s:4:"name";s:4:"SEG@";}i:12;a:3:{  s:5:"score";s:3:"400";s:4:"ping";s:2:"47";s:4:"name";s:9:"Krapivnik";}i:13;a  :3:{s:5:"score";s:1:"0";s:4:"ping";s:3:"105";s:4:"name";s:8:"Player77";}i:14;a:3:{s:5:"score";s:3:"200";s:4:"ping";s:2:"64";s:4:"name";s:10:"xLeprekoNx";}i:15;a:3:{s:5:"score";s:3:"300";s:4:"ping";s:2:"87";s:4:"name";s:7:"int_22h";}}}i:3;a:  5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip";s:12  :"80.77.174.92";s:6:"c_port";s:5:"28960";s:6:"q_port";s:5:"28960";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"8& amp; quot;;s:4:"zone";s:1:"1";s:7:"comment";s:19:"BmW | M3 | S&D - HC";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game";s:3  :"IW4";s:4:"name";s:37:"---===|| BmW | M3 | S&D - HC ||===---";s:3:"map";s:13:"mp_nightshift";s:7:"players";i:3;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:13:"BmW|Bla  ckSoul";s:6:"_email";s:24:"wiskasfreeware@yandex.ru";s:9:"_location& ;quo t;;s:3:"CIS";s:13:"_manuadminmod";s:23:"0.11.4_beta_BmW_Edition";s:8:"_website";s:15:"www.bmw-clan.ru";s:14:"aiw  _remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn  ame";s:13:"mp_nightshift";s:8:"protocol";s:3:"144";s:21:"scr_  game_allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1:  "1";s:11:"sv_hostname";s:37:"---===|| BmW | M3 | S&D - HC ||===---";s:10:"sv_maxping";s:3:"400";s:10:"sv_maxrate";s:5:"25000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:3:{i:0;a:3:{s:5:"score";s:3:"350";s:4:"ping";s:2:"33";s:4:"name";s:4:"stas";}i:1;a:3:{s:  5:"score";s:3:"340";s:4:"ping";s:2:"40";s:4:"name";s:7:"DuKaLiS";}i:2;a:3:{s:5:"score";s:3:"200";s:4:"ping";s:2:"69";s:4:"name";s:6:"Commix";}}}i:4;a:5  :{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip";s:12:  "93.81.244.68";s:6:"c_port";s:5:"28961";s:6:"q_port";s:5:& ;quo t;28961";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:1:"9& amp; quot;;s:4:"zone";s:0:"";s:7:"comment";s:23:"SSS|Shuya Special Squad";s:8:"location";s:2:"RU";}s:1:"s";a:6:{s:4:"game";  s:3:"IW4";s:4:"name";s:31:"SSS|Shuya Special Squad|SD HARD";s:3:"map";s:9:"mp_estate";s:7:"players";i:0;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:3:"xam" ; ;;s:6:"_email";s:17:"xam760904@mail.ru";s:9:"_location";s:18:"Russian Federation";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:22:"http://sss-mw2.clan.su";s:14:& ;quo t;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn  ame";s:9:"mp_estate";s:8:"protocol";s:3:"144";s:21:"scr_game_  allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"2";s:17:"sv  _allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1:  "1";s:11:"sv_hostname";s:31:"SSS|Shuya Special Squad|SD HARD";s:10:"sv_maxping";s:3:"450";s:10:"sv_maxrate";s:5:"10000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:0:{}}i:5;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip& amp; quot;;s:12:"93.81.244.68";s:6:"c_port";s:5:"28963";s:6:"q_port& ;quo t;;s:5:"28963";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:2:"10";s:4:"zone";s:0:"";s:7:"comment";s:3:"FTS";s:8:"location";s:2:"RU"  ;}s:1:"s";a:6:{s:4:"game";s:3:"IW4";s:4:"name";s:36:":::  FTS | Fuck The System | HC-S&D:::";s:3:"map";s:9:"mp_vacant";s:7:"players";i:0;s:10:"playersmax";i:14;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"14";s:6:"_admin";s:3:"xam" ; ;;s:6:"_email";s:17:"xam760904@mail.ru";s:9:"_location";s:18:"Russian Federation";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:22:"http://sss-mw2.clan.su";s:14:& ;quo t;aiw_remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn  ame";s:9:"mp_vacant";s:8:"protocol";s:3:"144";s:21:"scr_game_  allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"2";s:17:"sv  _allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1:  "1";s:11:"sv_hostname";s:36:":::FTS | Fuck The System | HC-S&D:::";s:10:"sv_maxping";s:3:"450";s:10:"sv_maxrate";s:5:"10000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:0:{}}i:6;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip& amp; quot;;s:17:"dimgrad.no-ip.org";s:6:"c_port";s:5:"28966";s:6:"q_por  t";s:5:"28966";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:{s:7:"request";s:4:"sepc";s:2:"id";s:2:"12  ";s:4:"zone";s:0:"";s:7:"comment";s:3:"MPX";s:8:"location";s:2:"RU"  ;}s:1:"s";a:6:{s:4:"game";s:3:"IW4";s:4:"name";s:36:"-==  MpX==-Clan S&D Hardcore [DimgraD]";s:3:"map";s:9:"mp_vacant";s:7:"players";i:0;s:10:"playersmax";i:18;s:8:"password";i:0;}s:1:"e";a:25:{s:12:"shortversion";s:4:"0.3c";s:13:"sv_maxclients";s:2:"18";s:6:"_admin";s:13:"MpX|Cap  piToXa";s:6:"_email";s:15:"zmey@dsa-dim.ru";s:9:"_location";s:17:& amp; quot;RU - Dimitrovgrad";s:13:"_manuadminmod";s:11:"0.11.4_beta";s:8:"_website";s:17:"http://dsa-dim.ru";s:14:"aiw  _remotekick";s:1:"1";s:10:"aiw_secure";s:1:"0";s:10:"g_gametype";s:2:"sd";s:10:"g_hardcore";s:1:"1";s:8:"gamename";s:3:"IW4";s:7:"mapn  ame";s:9:"mp_vacant";s:8:"protocol";s:3:"144";s:21:"scr_game_  allowkillcam";s:1:"1";s:15:"scr_team_fftype";s:1:"0";s:17:"sv_allowanonymous";s:1:"0";s:21:"sv_allowclientconsole";s:1:"1";s:15:"sv_floodprotect";s:1:  "1";s:11:"sv_hostname";s:36:"-==MpX==-Clan S&D Hardcore [DimgraD]";s:10:"sv_maxping";s:3:"350";s:10:"sv_maxrate";s:4:"5000";s:10:"sv_minping";s:1:"0";s:17:"sv_privateclients";s:1:"0";s:27:"sv_privateclientsforclients";s:1:"0";}s:1:"p";a:0:{}}i:7;a:5:{s:1:"b";a:7:{s:4:"type";s:13:"callofdutymw2";s:2:"ip& amp; quot;;s:13:"80.77.174.253";s:6:"c_port";s:5:"28962";s:6:"q_port";s:5:"28962  ";s:6:"s_port";s:1:"0";s:6:"status";i:1;s:7:"pending";i:0;}s:1:"o";a:5:
Скрытый текст


это я вырезала информацию по 3-м серверам, а их там 1300 и все вот так вот сплошным текстом

Цитата
Ну вот, значит, у тебя уже есть готовый массив с именами пользователей и их последней активности?

Нет. Имена берутся из того что выше, а вот время когда пользователь последний раз был на сервере мне и нужно записать в БД. Мне сказали что будет проще если заносить всех игроков в БД, но я тоже без понятия как это делается(

Спустя 19 часов, 6 минут, 26 секунд (28.07.2012 - 11:35) Xsfd написал(а):
По поводу вопроса в ЛС насчёт отображения сервера. На самом деле мысль интересная, я попробовал у себя сделать, но есть одна проблема. Если в массиве игроков 40 то они все будут выводиться справа в столбике, хотя это совсем не по плану. Может здесь кто подскажет как сделать так чтобы по массиву шел только поиск т.к я не понял.


while ($array = mysql_fetch_assoc($fres))
{
$resTime = $timer - $array['visit'];
$avatar = $array['avatar'];
foreach ($server_list as $server)
{
$server_list = lgsl_sort_servers($server_list);

foreach ($server['p'] as $player)
{


if (strpos($player['name'], $array['nickname']) !== FALSE)
{
$db_stat = 2;
$stat = "online";
$stat2 = "online";
}
else if($resTime < 300)
{
$db_stat = 1;
$stat = "playing";
$stat2 = "online";
}
else
{
$db_stat = 0;
$stat = "offline";
$stat2 = "offline";
}


echo " ВЫВОД ТЕЛА";
}
}
}





В итоге получается в той колонке с пользователями, что у тебя справа, список всех игроков со всех сервов, а надо я так понимаю только определённые
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.