Форум сетевых администраторов
Показаны 8 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VBulletin 2.x.x (http://netadmin.ws/forum/forumdisplay.php?forumid=45)
-- Как правильно написать код? (http://netadmin.ws/forum/showthread.php?threadid=7374)


Помещено Kirill_M 25-12-2003 в 21:32:

Question Как правильно написать код?

В таблице user по ключу usergroupid считаем количество пользователей:

PHP:


$statadmins 
= $DB_site->query_first('SELECT COUNT(userid) AS users FROM user WHERE usergroupid=6');
        
$statadmin = $statadmins['users'];

    
$statmoderators = $DB_site->query_first('SELECT COUNT(userid) AS users FROM user WHERE usergroupid=7');
        
$statmoderator = $statmoderators['users'];


Так как групп пользователей довольно много, то данный метод подсчёта выглядит некузяво. Хочется взять из таблицы user данные в массив и уже в нём посчитать количество пользователей по каждой группе.

PHP:

$stats 
= $DB_site->query("
        SELECT COUNT(*) AS count, usergroupid
        FROM user
        GROUP BY usergroupid
        ORDER BY count DESC
    "
); 

  echo 
"<table>\n";
  while (
$usergroup=$DB_site->fetch_array($stats)) {
    echo 
"<tr>\n<td>$usergroup[usergroupid]</td>\n<td>$usergroup[count]</td>\n<td></td></tr>\n";
}
  echo 
"</table>\n";


Вопрос: как должен выглядеть код выборки из массива, чтобы можно было определить переменные
$statadmin=тра-та-та;
$statmoderator=тра-та-та;

__________________
Кирилл


Помещено [wish]master 25-12-2003 в 23:39:

Массив тебе нафик не нужен! Конкретное значение из базы получить очень просто:

PHP:


// Пишем функцию, чтобы использовать ее в дальнейшем
function sql_val ($value1, $value2, $value3) {
        return @
mysql_result (mysql_query ($value1), $value2, $value3);
}

// Значение из базы получаем примерно так
$my_val = sql_val ("SELECT * FROM my_table", 0, "bla-bla");

__________________
Однажды, только ты поверь,
Маятник качнется в правильную сторону...


Помещено Krionix 27-12-2003 в 10:26:


PHP:


while ($stat=$DB_site->fetch_array($stats )) {
$statm[$stat[usergroupid]]=$stat[count];
}


$statm[6] - админ
$statm[3] - user и т.д.

Кстати интересно, что быстрее, сделать n-запросов или перебрать n-вариантов в цикле ?

__________________
Форум 3DNews


Помещено [wish]master 04-01-2004 в 23:46:

n-запросов быстрее.
а ещё лучше индексы делать. да.

__________________
Однажды, только ты поверь,
Маятник качнется в правильную сторону...


Помещено Kirill_M 05-01-2004 в 03:53:

[wish]master

Странно. Обычные запросы к базе - это дисковые операции, которые получаются медленнее, чем выборка из массива, хранящегося в оперативной (и более быстрой) памяти.

__________________
Кирилл


Помещено [wish]master 05-01-2004 в 04:51:

Ð_то теоретически. Практически почему-то не так. Сам на локалхосте проверял.

__________________
Однажды, только ты поверь,
Маятник качнется в правильную сторону...


Помещено Kirill_M 05-01-2004 в 05:28:

[wish]master
А разница очень большая?

__________________
Кирилл


Помещено Vanish 05-01-2004 в 10:37:

quote:
Обычные запросы к базе - это дисковые операции

если база файловая. Если же SQL все намного сложнее, да.

У SQL баз есть оптимизаторы запросов, так что выполняются они действительно быстро. И на больших объемах информации значительно выигрывают и у массивов =)) и у файловых баз.

Хотя если выборка осуществляется из таблиц не имеющих индекса и/или первичного ключа, то тогда возможно и обратный эффект.

__________________
No pity, no mercy, no regret.


Формат времени GMT. Текущее время 21:56.
Показаны 8 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.