Автор оригинала: Squall
После внимательного прочтения мануалов выяснилось, что mysql_fetch_array() возвращает также индексы, как названия полей.
Гхм... разумеется, только, как я говорил выше, используй константу, приведенную выше, чтобы размер возвращаемого массива был вдвое меньше, тебе ведь не нужны численные индексы.
Далее, я бы пошел по другому пути
1.а) вместо трех строковых переменных, я бы создал один массив для цветов:
PHP:
$colors=array(
"admin"=>"#FFFFFFF",
"guest"=>"#FF0000",
//и т.д.
);
1.б)соответственно в цикле бы использовал бы
list() key()
2) Второй путь, использовал бы подчиненную таблицу для типов (удобно тем, что кол-во типов может быть больше и их легко добавлять)
а)соответсвенно в первой таблице, вместо varchar() для admin, guest и т.д. использовал бы integer(11), где значение поля является
0 - admin 1 - guest и т.д. Соответсвенно в подчиненной таблице занес:
1)Название типа пользователя
2)Права
3)Цветовую схему
4)Описание
5)..... и т.д.
Соответственно запрос бы выглядел так:
SELECT t1.name, t2.type, t2.color FROM chat_users AS t1 LEFT JOIN users_type AS t2 ON(t2.id=t1.gid) WHERE t1.status='online';
Примечание: status я бы сделал числовой энумератор, но это на вкус.
Т.е. одним запросом ты получаешь все нужные данные в один массив не делая лишних кривых if'ов и телодвижений.
ИМХО это более оправдано и дает возможность легко менять/добавлять условия, праметры и т.д. не влезая в код каждый раз.