gray
Новичок
Поясни, подробнее, плиз. В чем именно ты его видишь?в нём и так очень много "говнокода" (в тех 15 строках, которые ты написал тут).
для собственного развития
Поясни, подробнее, плиз. В чем именно ты его видишь?в нём и так очень много "говнокода" (в тех 15 строках, которые ты написал тут).
Нужна, чувак. Нужна.Мне не нужна помощь в переделки этой функции.
а вот врать совсем нехорошо.isClient вызывается на некоторых страницах сотни раз.
спасибо тебе мил человек. очередному идиоту дал соску пососать.так забей это туда же в базу.
Не понял претензий. Человек пришёл с готовым, пускай и индокодом, но всё же РАБОТАЮЩИМ, потому что понимал что что-то делает не так. Я выдал ему кусок всевдокода, который показал в каком направлении двигаться, но никак НЕ ГОТОВЫЙ код.спасибо тебе мил человек. очередному идиоту дал соску пососать.
Проблема в том, что это направление - тупиковое.Я выдал показал в каком направлении двигаться
Ну так всё зависит от предполагаемого кол-ва пользователей и от характера запросов информации о нахождении пользователей в группах в рамках одного запуска скриптаВпрочем, решение damner2 в этом смысле тоже не торт, если он имеет в виду всех пользователей, а не кэширование информации о тех, которых уже в этом сеансе запрашивали.
Там сложно понять из контекста.
Ну, если исходить из опыта, то по модераторам и одминам вопросов нет - там можно даже и строкой с експлодом.Ну так всё зависит от предполагаемого кол-ва пользователей и от характера запросов информации о нахождении пользователей в группах в рамках одного запуска скрипта![]()
Не факт, что у него будет мало-мальски живая системаУ чувака в постановке задачи подмена понятий: он, ради (пусть даже сотен) показываемых на одной странице, собирается жрать в память ВООБЩЕ ВСЕХ.
И это говнокэширование представляется совсем уж дичью на любой мало-мальски живой, а не воображаемой системе.
Этим доводом можно оправдать любой говнокод.Урок извлекается гораздо лучше, когда сам сталкиваешься с проблемами.
Я не о том, что у него система пока не в продакшене, а о том, что его сайт может и не дорасти до "живого" с кучей пользователейНу разумеется, на тестовой системе у него нет пользователей.
function defineCostants(){
$query="SELECT GROUP_CONCAT(CAST(`t1`.`id` AS CHAR)) as isCoworcker FROM `users` `t1` WHERE `t1`.`group_id` >'0' AND `t1`.`client_id` <'1' GROUP BY `t1`.`client_id`;";
$result=mysql_query($query) or die ("Ошибка выполнения запроса к БД: ".mysql_error());
while ($row = mysql_fetch_assoc($result)) define("_ID_COWORKERS_", $row['isCoworcker']);
$query="SELECT GROUP_CONCAT(CAST(`t1`.`id` AS CHAR)) as isClient FROM `users` `t1` WHERE `t1`.`client_id`>'0' AND `t1`.`group_id`<'1' GROUP BY `t1`.`group_id`;";
$result=mysql_query($query) or die ("Ошибка выполнения запроса к БД: ".mysql_error());
while ($row = mysql_fetch_assoc($result)) define("_ID_CLIENTS_", $row['isClient']);
$query="SELECT `t2`.`sysName`, GROUP_CONCAT(CAST(`t1`.`id` AS CHAR)) as groupName FROM `users` `t1`, `groups` `t2` WHERE `t1`.`group_id`=`t2`.`id` AND`t1`.`group_id`>'0' GROUP BY `t1`.`group_id`";
$result=mysql_query($query) or die ("Ошибка выполнения запроса к БД: ".mysql_error());
while($row = mysql_fetch_assoc($result)) define('_ID_'.strtoupper($row['sysName']).'S_', $row['groupName']);
}
function isManager($id){
return in_array($id, explode(',',_ID_MANAGERS_));
}
function isManager($id){
static $userType;
if ($userType === null) {
$query="SELECT 1 FROM `users` `t1`, `groups` `t2` WHERE `t1`.`id`='".mysql_real_escape_string($id)."' AND `t2`.`sysName`='manager' AND `t1`.`group_id`=`t2`.`id`;";
$result=mysql_query($query) or die ("Ошибка выполнения запроса к БД: ".mysql_error());
$userType=(mysql_num_rows($result)=='1')?true:false;
}
return $userType;
}
$userType=(mysql_num_rows($result)=='1')?true:false;
функция isManager() должна выдавать true,только на менеджера. любой другой тип пользователей выдаст - false. что собственно и требуется. Есть своя функция на каждое множество пользователей (клиенты\сотрудники(менеджеры,логисты, администраторы и т.п.)).попробуй-ка применить эту функцию последовательно сначала к менеджеру, а потом - к простому крестьянину. Ну, или наоборот.
Результат должен тебя удивить.
Я так понимаю здесь намекаете на то, что конструкция кривая? Что в ней смущает? Я к сожалению не телепат, чтобы понять вашу мысль. Проясните, пожалуйста.ну и позволю себе отдельную шпильку, поскольку такой код, по удивительному совпадению, всегда коррелирует с предложениями послать ромашкового чаю
PHP:$userType=(mysql_num_rows($result)=='1')?true:false;