Хочу вывести возраст вместо дня рождения, но выходит только текущий год, подскажите что не так? Код (Text): //Возраст $age = $db->super_query("SELECT user_day, user_month, user_year FROM `".PREFIX."_users` WHERE user_id = '{$user_info['user_id']}'"); $month = $row['user_month']; $day = $row['user_day']; $year = $row['user_year']; function getAge($day, $month, $year) { if($month > date('m') || $month == date('m') && $day > date('d')) return (date('Y') - $year - 1); else return (date('Y') - $year); } $age = getAge($month, $day, $year); $tpl->set('{age}', $age);
это ужас-ужас! в mysql есть тип DATE. можно считать сразу в запросе: пример из документации — через TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) можно прочитать дату в PHP (придет в виде строки 'YYYY-MM-DD') и считать $now->diff($birthday)->format('%y');
что-то у меня никак не получается(( Помогите кто сможет, в долгу не останусь вот вывод дня рождения Код (Text): //День рождение $user_birthday = explode('-', $row['user_birthday']); $row['user_day'] = $user_birthday[2]; $row['user_month'] = $user_birthday[1]; $row['user_year'] = $user_birthday[0]; if($row['user_day'] > 0 && $row['user_day'] <= 31 && $row['user_month'] > 0 && $row['user_month'] < 13){ $tpl->set('[not-all-birthday]', ''); $tpl->set('[/not-all-birthday]', ''); if($row['user_day'] && $row['user_month'] && $row['user_year'] > 1929 && $row['user_year'] < 2012) $tpl->set('{birth-day}', '<a href="/?go=search&day='.$row['user_day'].'&month='.$row['user_month'].'&year='.$row['user_year'].'" onClick="Page.Go(this.href); return false">'.langdate('j F Y', strtotime($row['user_year'].'-'.$row['user_month'].'-'.$row['user_day'])).' г.</a>'); else $tpl->set('{birth-day}', '<a href="/?go=search&day='.$row['user_day'].'&month='.$row['user_month'].'" onClick="Page.Go(this.href); return false">'.langdate('j F', strtotime($row['user_year'].'-'.$row['user_month'].'-'.$row['user_day'])).'</a>'); } else { $tpl->set_block("'\\[not-all-birthday\\](.*?)\\[/not-all-birthday\\]'si",""); }
Везде. http://php.ru/manual/class.datetime.html http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html Даты и время можно складывать и вычитать как средствами пхп, так и мускулем. Разберитесь один раз и не портите себе карму написанием скриптов призывающих ктулху )
Код (Text): $age = $db->super_query("SELECT user_day, user_month, user_year FROM `".PREFIX."_users` WHERE user_id = '{$user_info['user_id']}'"); $month = $row['user_month']; $day = $row['user_day']; $year = $row['user_year']; function age($user_birthday){ list($day,$month,$year) = explode("/",$user_birthday); $year_diff = date("Y") - $year; $month_diff = date("F") - $month; $day_diff = date("j") - $day; if ($day_diff < 0 && $month_diff==0){$year_diff--;} if ($day_diff < 0 && $month_diff < 0){$year_diff--;} return $year_diff; } $tpl->set('{age}', $year_diff); предложите кто-нибудь разумное решение, а то я никак не пойму
спасибо, решил проблему, но нарисовалась новая Код (Text): $age = $db->super_query("SELECT `user_birthday`,(YEAR(CURRENT_DATE)-YEAR(`user_birthday`))-(RIGHT(CURRENT_DATE,5)<RIGHT(`user_birthday`,5)) AS `age` FROM `".PREFIX."_users` WHERE `user_id` = {$id}"); $tpl->set('{age}', $age); теперь в профиле пути картинок меняются, везде, где есть слово age- меняет на возраст юзера... например images/menu.png меняет на im19s/menu.png не подскажете как бороться?