Много раз видел новичков, которые начинали что либо писать (сам таким же был) , но не изучив вопросы и реализации до нужного уровня.
Тема тут создавалась, прямое этому доказательство, на копипастили, создали кучу конструкций IF ELSEIF ELSE,
где то сократили не зная правил, когда можно, когда нельзя, в итоге код разросся и контролировать его стало не возможным, даже если соблюсти все отступы и убрать сокращения.
логика вроде была построенна правильно, но изучить данные почему то ни кто не хочет, а лепить непонятные конструкции, и бежать в форум, создавать тему о помощи, участники увидив который даже не хотят разбираться
в этом быдлокоде, так как свое время всем дорого, а быдлокодеров навалом, проще послать читать книжки.
вот функция которую попытался написать товарищ, чтоб оценить всю сущность проблемы и метод быдлореализации
function on_k($id)
{
$usk=mysql_fetch_array(mysql_query("SELECT * FROM `kolhoz_user` WHERE `id` = '$id'"));
$us=$usk;
$t=time()-600;
if($usk['date_last']<=$t)
{
if($us['pol']==0){if($us['ico']==0){
if($usk['level']>=0 && $usk['level']<30)$img="user_female_offline.png";
elseif($usk['level']>=30 && $usk['level']<35)$img="user_female_gold_offline.png";
elseif($usk['level']>=35 && $usk['level']<40)$img="user_female_platin_offline.png";
elseif($usk['level']>=40 && $usk['level']<45)$img="user_female_green_offline.png";
elseif($usk['level']>=45 && $usk['level']<50)$img="user_female_45_offline.png";
else $img="user_female_50_offline.png";
}else{if($usk['ico']==1)$img="angel_female_off.png";elseif($usk['ico']==2)$img="alladin_female_off.png";elseif($usk['ico']==3)$img="bayker_female_off.png";elseif($usk['ico']==4)$img="boks_female_off.png";elseif($usk['ico']==5)$img="demon_female_off.png";elseif($usk['ico']==6)$img="fiance_female_off.png";elseif($usk['ico']==7)$img="holiday_female_off.png";elseif($usk['ico']==8)$img="glamyr_female_off.png";elseif($usk['ico']==9)$img="love_female_off.png";elseif($usk['ico']==10)$img="shrek_female_off.png";}}
else
{
if($usk['ico']==0){if($usk['level']>=0 && $usk['level']<30)$img="user_male_offline.png";
elseif($usk['level']>=30 && $usk['level']<35)$img="user_male_gold_offline.png";
elseif($usk['level']>=35 && $usk['level']<40)$img="user_male_platin_offline.png";
elseif($usk['level']>=40 && $usk['level']<45)$img="user_male_green_offline.png";
elseif($usk['level']>=45 && $usk['level']<50)$img="user_male_45_offline.png";
else $img="user_male_50_offline.png";
}elseif($usk['ico']==1)$img="angel_male_off.png";elseif($usk['ico']==2)$img="alladin_male_off.png";elseif($usk['ico']==3)$img="bayker_male_off.png";elseif($usk['ico']==4)$img="boks_male_off.png";elseif($usk['ico']==5)$img="demon_male_off.png";elseif($usk['ico']==6)$img="fiance_male_off.png";elseif($usk['ico']==7)$img="holiday_male_off.png";elseif($usk['ico']==8)$img="glamyr_male_off.png";elseif($usk['ico']==9)$img="love_male_off.png";else($usk['ico']==10)$img="shrek_male_off.png";}}
else
{
if($us['pol']==0){if($us['ico']==0){
if($usk['level']>=0 && $usk['level']<30)$img="user_female.png";
elseif($usk['level']>=30 && $usk['level']<35)$img="user_female_gold.png";
elseif($usk['level']>=35 && $usk['level']<40)$img="user_female_platin.png";
elseif($usk['level']>=40 && $usk['level']<45)$img="user_female_green.png";
elseif($usk['level']>=45 && $usk['level']<50)$img="user_female_45.png";
else $img="user_female_50.png";
}
}else{if($usk['ico']==1)$img="angel_female.png";elseif($usk['ico']==2)$img="alladin_female.png";elseif($usk['ico']==3)$img="bayker_female.png";elseif($usk['ico']==4)$img="boks_female.png";elseif($usk['ico']==5)$img="demon_female.png";elseif($usk['ico']==6)$img="fiance_female.png";elseif($usk['ico']==7)$img="holiday_female.png";elseif($usk['ico']==8)$img="glamyr_female.png";elseif($usk['ico']==9)$img="love_male.png";else($usk['ico']==10)$img="shrek_female.png";}
else
{
if($usk['ico']==0){
if($usk['level']>=0 && $usk['level']<30)$img="user_male.png";
elseif($usk['level']>=30 && $usk['level']<35)$img="user_male_gold.png";
elseif($usk['level']>=35 && $usk['level']<40)$img="user_male_platin.png";
elseif($usk['level']>=40 && $usk['level']<45)$img="user_male_green.png";
elseif($usk['level']>=45 && $usk['level']<50)$img="user_male_45.png";
else $img="user_male_50.png";
}
else{if($usk['ico']==1)$img="angel_male.png";elseif($usk['ico']==2)$img="alladin_male.png";elseif($usk['ico']==3)$img="bayker_male.png";elseif($usk['ico']==4)$img="boks_male.png";elseif($usk['ico']==5)$img="demon_male.png";elseif($usk['ico']==6)$img="fiance_male.png";elseif($usk['ico']==7)$img="holiday_male.png";elseif($usk['ico']==8)$img="glamyr_male.png";elseif($usk['ico']==9)$img="love_male.png";else($usk['ico']==10)$img="shrek_male.png";}}
}
echo "<img src='images/icons/$img'/>";
}
не много посидев можно придумать простую функцию, которая сделает нам нужное,
нам надо узнать есть ли у юзера купленная икона, онлайн/офлайн, карму(посты где либо, баллы))), и пол
---
то что автор предложил
RAZDOR
Вот необходимый алгоритм if(женский пол){Если пользователь онлаин и не выбрана картинка{выводим стандартные картинки}иначе{выводим выборочные}или если пользователь офф{выводим стандартные картинки}иначе{выводим выборочные}}иначе(тоесть мужской пол){Если пользователь онлаин и не выбрана картинка{выводим стандартные картинки}иначе{выводим выборочные}или если пользователь офф{выводим стандартные картинки}иначе{выводим выборочны} с реализацией засада
---
Анализ быдлокода
смотрим на аргументы функции - это ид, который в итоге тащит массив с базы, поля юзера, причем все поля
-- зачем тащить опять все с базы, делать еще один запрос, когда иконки эти скорее всего будут выводиться в каких либо циклах (посты, коменты))) , где запрос на юзера уже есть
-- для совместимости двух быдлокодов дублируем массив , чтоб $usk и $us работало, вообще не рационально
----
нам то надо всего 4 поля, это временная метка о последнем посещении сайта, чтоб высчитать онлайн или офлайн, пол юзера, карму или какие либо прочие заслуги, выбранная иконка
значит в функцию можно будет и передать эти аргументы имея запрос от цикла вывода
далее мы видим копипаст, где один с сокращениями конструкций без фигурных скобок (начинающим лучше писать все скобки, самим же проще будет разобраться)
второй копипаст проверяет карму с шагом в 5, менее 30, от 30 до 35, от 35 до 40...
в итоге все это связанно опять же конструкциями IF ELSE по половому признаку и метке онлайн.
Автор кода раздул копипаст до того момента когда его уже даже разбирать и понять сложно, в итоге где то пропустил или не дописал пару тройку скобок, и хана, код не работает, помогите
глянув код, любой адекватный товарищ пройдет мимо, ну или промолчит от полученного шока от кода.
К реализации
я собрал картинки по их логике и общим признакам в группы, посмотрев имена файлов, пришло в голову две реализации
первая - это разбросать по папкам и полученными аргументами управлять выводом (Домашнее задание, если кому интересно посидеть подумать, сделать и получить практику)
вторая - это группы собрать в массив (многомерный) и апперировать ключами (это и будет пример)
Велосипедные хитрости
чтоб не проверять число с шагом, то есть по диапазону (шаг 5), придумался такой вот велосипед
карма умножается на 2, чтоб получилось число которое делится на 10 без остатка
делим на 10 и округляем в большую сторону
то есть условие как бы получилось не больше 30 и меньше 35, а больше 60 и меньше 70, округляем и делим на 10, получаем 7, ключ для картинки от 30 до 35 и так далее
Собираем массив
далее смотрим что карма работает если картинка не выбрана, то есть при значении 0 для поля картинка, прочие выбранные картинки уже от одного до 10
то есть массив от 0 до 10, где 0 элемент тоже массив с ключами полученными от велосипеда
далее нам нужно еще в имени файла указать онлайн и пол
Сама функция получилась 10 строчек
function user_icon($last, $sex, $ico, $level) {
// проверка онлайна //
$off = ($last + 600) - time() < 0 ? 1 : 0;
// проверка баланса //
$level = ceil($level*2/10);
$level = $level<6 ? 5 : ($level>10 ? 10 : $level);
// проверка пола //
$sex = $sex > 0 ? 'male' : 'female';
$array_ico = array(array(5 => '', '_gold', '_platin', '_green', '_45', '_50'), 'angel_', 'alladin_', 'bayker_', 'boks_', 'demon_', 'fiance_', 'holiday_', 'glamyr_', 'love_', 'shrek_');
$before = $ico > 0 ? $array_ico[$ico] . $sex : 'user_' . $sex . $array_ico[0][$level];
// окончание //
$after = $off > 0 ? ($ico > 0 ? '_off' : '_offline') : '';
return '<img src="images/icons/' . $before . $after . '.png" alt="ico" />';
}
вызов функции в выводе (цикл вывода постов))) передав нужные аргументы
P.S.
вот вам файл из футбольного менеджера на 400кб подобного быдлокода, сам удивляюсь как его с файлов переписали на базу, и не удивляюсь почему дырок навалом и местами просто код неожиданно обрывается
(Гг , наверное этот герой просто от усталости падал под стол , так как сутками втыкал в быдло код )