Например, в хаосе есть типы, как рулетки (5, 10 и 15 метров), гвозди (10, 20, 30 см) и т.д. Если пройтись foreach по этому массиву то все выводится вместе . Вопрос, как сделать так
Рулетки: (статичный текст)
Рулетка 5 метров(динамичный текст)
Рулетка 10 метров(динамичный текст)
Рулетка 15 метров(динамичный текст)
Гвозди (статичный текст)
Гвозди 10 см (динамичный текст)
Гвозди 20 см(динамичный текст)
Гвозди 30 см(динамичный текст)
Спустя 14 минут, 9 секунд (27.03.2010 - 02:51) qpayct написал(а):
к парядку, гасподин!
давай смотреть в корень. расскажи, как создаётся беспорядок?
давай смотреть в корень. расскажи, как создаётся беспорядок?
Спустя 8 часов, 20 минут, 33 секунды (27.03.2010 - 11:11) dcum написал(а):
Цитата (qpayct @ 26.03.2010 - 23:51) |
к парядку, гасподин! давай смотреть в корень. расскажи, как создаётся беспорядок? |
Очень сложно и мне не понятен, я на примере lgsl. Там принцип такой, в БД 1000 серверов (разных игр). Идет запрос на их состояние, все это записывается в кеш, а уж из него и выводится на страницу.
Спустя 1 час, 5 минут, 13 секунд (27.03.2010 - 12:16) ZigZag написал(а):
Все равно вопрос не понятен, приведи куски кода, как данные хранятся в массиве и прочую информацию, которая даст понимание как и что
Спустя 7 часов, 27 секунд (27.03.2010 - 19:17) qpayct написал(а):
dcum
нужно увидеть, как создаётся этот массив, тогда и будет о чём говорить
нужно увидеть, как создаётся этот массив, тогда и будет о чём говорить
Спустя 2 часа, 27 минут, 18 секунд (27.03.2010 - 21:44) dcum написал(а):
Ну-ну
Свернутый текст
function lgsl_query_cached_all($request)
{
global $lgsl_config;
lgsl_database();
$mysql_query = "SELECT `type`,`ip`,`c_port`,`q_port`,`s_port` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `disabled`=0 ORDER BY `cache_time` ASC";
$mysql_result = mysql_query($mysql_query) or die(mysql_error());
$server_list = array();
while ($mysql_row = mysql_fetch_array($mysql_result, MYSQL_ASSOC))
{
if (strpos($request, "c") === FALSE && lgsl_timer("check")) { $request .= "c"; }
$server = lgsl_query_cached($mysql_row['type'], $mysql_row['ip'], $mysql_row['c_port'], $mysql_row['q_port'], $mysql_row['s_port'], $request);
if ($lgsl_config['hide_offline'][0] && !$server['b']['status']) { continue; }
$server_list[] = $server;
}
return $server_list;
}
//------------------------------------------------------------------------------------------------------------+
function lgsl_query_cached_zone($request, $zone_number)
{
global $lgsl_config;
lgsl_database();
$zone_number = intval($zone_number);
$zone_random = intval($lgsl_config['random'][$zone_number]);
if ($zone_random)
{
$mysql_query = "SELECT `type`,`ip`,`c_port`,`q_port`,`s_port` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `zone`='{$zone_number}' AND `disabled`=0 ORDER BY rand()";
}
else
{
$mysql_query = "SELECT `type`,`ip`,`c_port`,`q_port`,`s_port` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `zone`='{$zone_number}' AND `disabled`=0 ORDER BY `cache_time` ASC";
}
$mysql_result = mysql_query($mysql_query) or die(mysql_error());
$server_list = array();
while ($mysql_row = mysql_fetch_array($mysql_result, MYSQL_ASSOC))
{
if (strpos($request, "c") === FALSE && lgsl_timer("check")) { $request .= "c"; }
$server = lgsl_query_cached($mysql_row['type'], $mysql_row['ip'], $mysql_row['c_port'], $mysql_row['q_port'], $mysql_row['s_port'], $request);
if ($lgsl_config['hide_offline'][$zone_number] && !$server['b']['status']) { continue; }
$server_list[] = $server;
if ($zone_random && count($server_list) >= $zone_random) { break; }
}
return $server_list;
}
$server_list = lgsl_query_cached_all("s");[/php]
$server_list = lgsl_sort_servers($server_list);
//------------------------------------------------------------------------------------------------------------+
$output .= "
<div style='text-align:center; font-size:10px; font-face:arial'>
<table cellpadding='4' cellspacing='2' style='margin:auto'>";
foreach ($server_list as $server)
{
$misc = lgsl_server_misc($server);
$server = lgsl_server_html($server);
$output .= "
<tr style='".lgsl_bg().";table-layout:fixed'>
<td>
<img alt='' src='{$misc['icon_status']}' title='{$misc['text_status']}' />
</td>
<td>
<img alt='' src='{$misc['icon_game']}' title='{$misc['text_type_game']}' />
</td>
<td title='{$lgsl_config['text']['slk']}' style='text-align:right'>
<a href='{$misc['software_link']}' style='text-decoration:none'>
{$server['b']['ip']}:{$server['b']['c_port']}
</a>
</td>
<td title='{$server['s']['name']}' style='text-align:left'>
<div style='width:100%; overflow:hidden; height:1.3em'>
{$misc['name_filtered']}
</div>
</td>
<td style='white-space:nowrap; text-align:left'>
{$server['s']['map']}
</td>
<td style='white-space:nowrap; text-align:right'>
{$server['s']['players']} / {$server['s']['playersmax']}
</td>
<td style='white-space:nowrap; text-align:center'>
<a href='".lgsl_link($server['o']['id'])."'>
<img alt='' src='{$misc['icon_details']}' style='border:none' title='{$lgsl_config['text']['vsd']}' />
</a>
</td>
</tr>";
}
$output .= "
</table>
</div>";
Спустя 12 минут, 32 секунды (27.03.2010 - 21:57) qpayct написал(а):
ужас какой....
1. что ты передаёшь в $request и зачем ??
2. что возвращает lgsl_query_cached() ?? яж не вижу куда и зачем ты отправляешь данные
3. твоя форма я так понимаю тебя не устраивает. тогда опиши, как ты хочешь выводить данные.
1. что ты передаёшь в $request и зачем ??
2. что возвращает lgsl_query_cached() ?? яж не вижу куда и зачем ты отправляешь данные
3. твоя форма я так понимаю тебя не устраивает. тогда опиши, как ты хочешь выводить данные.
Спустя 7 минут, 55 секунд (27.03.2010 - 22:05) dcum написал(а):
Цитата (qpayct @ 27.03.2010 - 18:57) |
ужас какой.... 1. что ты передаёшь в $request и зачем ?? 2. что возвращает lgsl_query_cached() ?? яж не вижу куда и зачем ты отправляешь данные 3. твоя форма я так понимаю тебя не устраивает. тогда опиши, как ты хочешь выводить данные. |
Легче будет приложить весь файл
О выводе данных я уже написал в общем смысле еще в первом посту, если конкретней,
то
CS 1.6 (статичная форма)
Пошли сервера (меняются)
Source (статичная форма)
Пошли сервера (меняются)
и т.д.
ЗЫ мда я ощущаю себя полным фуфлом на этом форуме, не вижу "прикрепить файл"
Спустя 3 минуты, 44 секунды (27.03.2010 - 22:08) qpayct написал(а):
dcum
короче, если расчитвваешь на мою помощь, покажи, что возвращает lgsl_query_cached() без этого я помочь не в силах
короче, если расчитвваешь на мою помощь, покажи, что возвращает lgsl_query_cached() без этого я помочь не в силах
Спустя 1 минута, 39 секунд (27.03.2010 - 22:10) dcum написал(а):
Цитата (qpayct @ 27.03.2010 - 19:08) |
dcum короче, если расчитвваешь на мою помощь, покажи, что возвращает lgsl_query_cached() без этого я помочь не в силах |
наверное это...
Свернутый текст
function lgsl_query_cached($type, $ip, $c_port, $q_port, $s_port, $request)
{
global $lgsl_config;
lgsl_database();
// PROTECT THE DATABASE QUERY
$type = mysql_real_escape_string($type);
$ip = mysql_real_escape_string($ip);
$c_port = mysql_real_escape_string(intval($c_port));
$q_port = mysql_real_escape_string(intval($q_port));
$s_port = mysql_real_escape_string(intval($s_port));
// GET CACHE
$mysql_query = "SELECT * FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `type`='{$type}' AND `ip`='{$ip}' AND `q_port`='{$q_port}' LIMIT 1";
$mysql_result = mysql_query($mysql_query) or die(mysql_error());
$mysql_row = mysql_fetch_array($mysql_result, MYSQL_ASSOC);
// CHECK IF SERVER IS NOT IN THE DATABASE AND ADD IF REQUESTED
if (!$mysql_row)
{
if (strpos($request, "a") !== FALSE)
{
$mysql_query = "INSERT INTO `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` (`type`,`ip`,`c_port`,`q_port`,`s_port`,`cache`,`cache_time`) VALUES ('{$type}','{$ip}','{$c_port}','{$q_port}','{$s_port}','','')";
$mysql_result = mysql_query($mysql_query) or die(mysql_error());
$mysql_row['id'] = mysql_insert_id();
}
else
{
exit("LGSL PROBLEM: REQUESTED SERVER NOT IN DATABASE: '{$type} : {$ip} : {$c_port} : {$q_port} : {$s_port} : {$request}'");
}
}
// UNPACK CACHE AND CACHE TIMES
$cache = unserialize(base64_decode($mysql_row['cache']));
$cache_time = explode("_", $mysql_row['cache_time']);
$cache_time[0] = intval($cache_time[0]);
$cache_time[1] = intval($cache_time[1]);
$cache_time[2] = intval($cache_time[2]);
// SET THE SERVER AS OFFLINE AND PENDING WHEN THERE IS NO CACHE
if (!isset($cache['b']))
{
$cache = array();
$cache['b'] = array();
$cache['b']['status'] = 0;
$cache['b']['pending'] = 1;
}
// IF NEEDED CONVERT HOSTNAME TO IP
if ($lgsl_config['host_to_ip'])
{
$ip = gethostbyname($ip);
}
// ALWAYS UPDATE THESE WITH THE LATEST VALUES
$cache['b']['type'] = $type;
$cache['b']['ip'] = $ip;
$cache['b']['c_port'] = $c_port;
$cache['b']['q_port'] = $q_port;
$cache['b']['s_port'] = $s_port;
$cache['o']['request'] = $request;
$cache['o']['id'] = $mysql_row['id'];
$cache['o']['zone'] = $mysql_row['zone'];
$cache['o']['comment'] = $mysql_row['comment'];
if (!isset($cache['s']))
{
$cache['s'] = array();
$cache['s']['game'] = $type;
$cache['s']['name'] = $lgsl_config['text']['nnm'];
$cache['s']['map'] = $lgsl_config['text']['nmp'];
$cache['s']['players'] = 0;
$cache['s']['playersmax'] = 0;
$cache['s']['password'] = 0;
}
if (!isset($cache['e'])) { $cache['e'] = array(); }
if (!isset($cache['p'])) { $cache['p'] = array(); }
// CHECK WHAT IS NEEDED
$needed = "";
if (strpos($request, "c") === FALSE) // CACHE ONLY REQUEST
{
if (strpos($request, "s") !== FALSE && time() > ($cache_time[0]+$lgsl_config['cache_time'])) { $needed .= "s"; }
if (strpos($request, "e") !== FALSE && time() > ($cache_time[1]+$lgsl_config['cache_time'])) { $needed .= "e"; }
if (strpos($request, "p") !== FALSE && time() > ($cache_time[2]+$lgsl_config['cache_time'])) { $needed .= "p"; }
}
if ($needed)
{
// UPDATE CACHE TIMES BEFORE QUERY - PREVENTS OTHER INSTANCES FROM QUERY FLOODING THE SAME SERVER
$packed_times = time() + $lgsl_config['cache_time'] + 10;
$packed_times = "{$packed_times}_{$packed_times}_{$packed_times}";
$mysql_query = "UPDATE `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` SET `cache_time`='{$packed_times}' WHERE `id`='{$mysql_row['id']}' LIMIT 1";
$mysql_result = mysql_query($mysql_query) or die(mysql_error());
// GET WHAT IS NEEDED
$live = lgsl_query_live($type, $ip, $c_port, $q_port, $s_port, $needed);
if (!$live['b']['status'] && $lgsl_config['retry_offline'] && !$lgsl_config['feed']['method'])
{
$live = lgsl_query_live($type, $ip, $c_port, $q_port, $s_port, $needed);
}
// CHECK AND CONVERT TO UTF-8 WHERE NEEDED
$live = lgsl_charset_convert($live, lgsl_charset_detect($live));
// IF SERVER IS OFFLINE PRESERVE SOME OF THE CACHE AND CLEAR THE REST
if (!$live['b']['status'])
{
$live['s']['game'] = $cache['s']['game'];
$live['s']['name'] = $cache['s']['name'];
$live['s']['map'] = $cache['s']['map'];
$live['s']['password'] = $cache['s']['password'];
$live['s']['players'] = 0;
$live['s']['playersmax'] = $cache['s']['playersmax'];
$live['e'] = array();
$live['p'] = array();
}
// MERGE LIVE INTO CACHE
if (isset($live['b'])) { $cache['b'] = $live['b']; }
if (isset($live['s'])) { $cache['s'] = $live['s']; $cache_time[0] = time(); }
if (isset($live['e'])) { $cache['e'] = $live['e']; $cache_time[1] = time(); }
if (isset($live['p'])) { $cache['p'] = $live['p']; $cache_time[2] = time(); }
// UPDATE CACHE
$packed_cache = mysql_real_escape_string(base64_encode(serialize($cache)));
$packed_times = mysql_real_escape_string(implode("_", $cache_time));
$mysql_query = "UPDATE `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` SET `status`='{$cache['b']['status']}',`cache`='{$packed_cache}',`cache_time`='{$packed_times}' WHERE `id`='{$mysql_row['id']}' LIMIT 1";
$mysql_result = mysql_query($mysql_query) or die(mysql_error());
}
// RETURN ONLY THE REQUESTED
if (strpos($request, "s") === FALSE) { unset($cache['s']); }
if (strpos($request, "e") === FALSE) { unset($cache['e']); }
if (strpos($request, "p") === FALSE) { unset($cache['p']); }
return $cache;
}
Спустя 14 минут, 13 секунд (27.03.2010 - 22:24) qpayct написал(а):
так.
массив построен неправильно. советую выводить данные из таблицы в ассоциативный массив сохраняя таким образом ключи для дальнейшего удобства в его разборе. для наглядности привожу пример:
массив построен неправильно. советую выводить данные из таблицы в ассоциативный массив сохраняя таким образом ключи для дальнейшего удобства в его разборе. для наглядности привожу пример:
$i = 0;
$req = mysql_query("SELECT * FROM table");
while ($row = mysql_fetch_assoc($req)) {
foreach($row as $key => $val) {
$array[$i][$key] = $val;
}
$i++;
}
Спустя 4 минуты, 27 секунд (27.03.2010 - 22:29) dcum написал(а):
мда помог
Спустя 4 минуты, 14 секунд (27.03.2010 - 22:33) qpayct написал(а):
конечно. учись, пока я жив
Спустя 16 минут, 41 секунда (27.03.2010 - 22:49) dcum написал(а):
Ок, на этом форуме есть люди, которые помогут мне из "неправильного" массива сгруппировать данные? Или ждать следующего умника, который только и может задавать бесполезные вопросы, а в конце заключить - неправильный массив.
Спустя 23 минуты, 37 секунд (27.03.2010 - 23:13) qpayct написал(а):
dcum ну зачем же так? я ведь тебе сказал суть проблемы или ты хочешь, чтоб я за тебя всё делал ??
Спустя 1 час, 53 минуты, 58 секунд (28.03.2010 - 01:07) dcum написал(а):
Цитата (qpayct @ 27.03.2010 - 20:13) |
dcum ну зачем же так? я ведь тебе сказал суть проблемы или ты хочешь, чтоб я за тебя всё делал ?? |
единственное, что ты сделал так это набил себе посты, если не знаешь, как помочь, зачем было вообще лезть в тему? Ну, да, риторический вопрос.
Спустя 11 минут, 10 секунд (28.03.2010 - 01:18) qpayct написал(а):
иди колупай картошку стаканом, грубиян. пользы больше будет
Спустя 2 минуты, 33 секунды (28.03.2010 - 01:21) Adil написал(а):
Ты можешь показать структуру массива? через print_r.
Желательно:
Желательно:
print "<pre>";
print_r($array);
print "</pre>";
Спустя 10 часов, 27 минут, 56 секунд (28.03.2010 - 10:49) dcum написал(а):
Цитата (Nezabivaemiy @ 27.03.2010 - 22:21) |
Ты можешь показать структуру массива? через print_r. Желательно: print "<pre>"; |
Array
(
[b] => Array
(
[type] => halflife
[ip] => 92.241.176.65
[c_port] => 27042
[q_port] => 27042
[s_port] => 0
[status] => 1
[id] => 16
[rating] => -16
)
[o] => Array
(
[request] => sc
[id] => 16
[zone] => 0
[comment] =>
)
[s] => Array
(
[name] => Cs.FreeArena.Ru PlagueMod #2
[map] => zm_sewers
[game] => cstrike
[players] => 0
[playersmax] => 32
[password] => 0
[rating] => -16
[id] => 16
)
)
вот по [game] и хотелось бы сделать категории
Спустя 10 часов, 41 минута, 38 секунд (28.03.2010 - 21:30) Adil написал(а):
Отлично массив есть. Теперь покажи как ты хочешь чтобы этот массив выглядел?
Спустя 1 час, 13 минут, 31 секунда (28.03.2010 - 22:44) dcum написал(а):
Цитата (Nezabivaemiy @ 28.03.2010 - 18:30) |
Отлично массив есть. Теперь покажи как ты хочешь чтобы этот массив выглядел? |
Counter-Strike 1.6 Servers:
Server 1
Server 2
Server 3
Counter-Strike Source:
Server 1
Server 2
Server 3
Quake 3
Server 1
Server 2
Server 3