flake 25 Опубликовано: 28 августа 2008 Рассказать Опубликовано: 28 августа 2008 (изменено) нужен скрипт который "превращает" -дату/месяц/год- рождения в "возраст пользователя"...или чтото в этом роде. пример: "28-08-1988" "превращаем" в "20" (лет) Изменено 28 августа 2008 пользователем Flake Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 28 августа 2008 Рассказать Опубликовано: 28 августа 2008 могу просто пхп код функции дать function textstamp($number, $lang){ if (strlen($number) < 2) $number = "0".(string)$number; else $number = (string)$number; if ($number{0} != 1 && $number{1} == 1) return $lang[0]; elseif ($number{0} != 1 && $number{1} > 1 && $number{1} < 5) return $lang[1]; return $lang[2]; } function birthday($date, $stype){ global $_TIME; if ($stype > 0) return langdate("j F", $date); elseif ($stype == -1) return langdate("j F Y", $date); $now_day = date("j", $_TIME); $now_month = date("n", $_TIME); $now_year = date("Y", $_TIME); $time_day = date("j", $date); $time_month = date("n", $date); $time_year = date("Y", $date); $subtract = 0; if($now_month < $time_month) $subtract = 1; elseif($now_month == $time_month && $now_day < $time_day) $subtract = 1; $age = intval($now_year-$time_year-$subtract); if ($age < 10 || $age > 90) return "--"; return $age . textstamp($age, array(" год"," года"," лет")); } Цитата Ссылка на сообщение Поделиться на других сайтах
wawilon 0 Опубликовано: 29 августа 2008 Рассказать Опубликовано: 29 августа 2008 <?php $string = "28-08-1988"; $mas = explode("-",$string); $age = date("Y") - $mas[2]; echo $age; ?> Цитата Ссылка на сообщение Поделиться на других сайтах
kaliostro_den 2 Опубликовано: 29 августа 2008 Рассказать Опубликовано: 29 августа 2008 wawilon, Ерунда, у всех в этом лучае будет День рождения в новый год Цитата Ссылка на сообщение Поделиться на других сайтах
wawilon 0 Опубликовано: 29 августа 2008 Рассказать Опубликовано: 29 августа 2008 Что? Какой новый год? В данном случае скрипт выведет "20". Цитата Ссылка на сообщение Поделиться на других сайтах
kaliostro_den 2 Опубликовано: 29 августа 2008 Рассказать Опубликовано: 29 августа 2008 Ну в плане он будет показывать 20 до новго года, а 1 января будет показывать 21. Цитата Ссылка на сообщение Поделиться на других сайтах
wawilon 0 Опубликовано: 29 августа 2008 Рассказать Опубликовано: 29 августа 2008 Ах да, ты прав. Хотел на скорую руку написать. Ну тогда вот такой вариант: <?php $string = "28-08-1988"; $cur_day = date("j"); $cur_month = date("n"); $cur_year = date("Y"); $mas = explode("-",$string); $age = $cur_year - $mas[2]; if( ((int)$mas[1] > $cur_month) || ((int)$mas[1] == $cur_month && (int)$mas[0] > $cur_day) ) $age--; echo $age; ?> Цитата Ссылка на сообщение Поделиться на других сайтах
flake 25 Опубликовано: 30 августа 2008 Рассказать Опубликовано: 30 августа 2008 Автор извините за глупый вопрос, я в php вместо $string = "28-08-1988"; должен написать $string = "[xfvalue_day]-[xfvalue_mounth]-[xfvalue_year]"; ? Цитата Ссылка на сообщение Поделиться на других сайтах
wawilon 0 Опубликовано: 30 августа 2008 Рассказать Опубликовано: 30 августа 2008 Нет. Вот такие штуки типа "[xfvalue_day]" пишутся в шаблонах, которые имеют расширение .tpl, а что ты должен и где писать это зависит от того где и как у тебя вообще хранится дата рождения (в базе(и в какой таблице), в файле и т.д.). Если сам в этом плохо разбираешься я посоветовал бы все же заплатить кому нибудь и тебе сделают все быстро. Цитата Ссылка на сообщение Поделиться на других сайтах
flake 25 Опубликовано: 30 августа 2008 Рассказать Опубликовано: 30 августа 2008 Автор вот что в базе: CREATE TABLE `dle_post` ( `xfields` text NOT NULL, Цитата Ссылка на сообщение Поделиться на других сайтах
wawilon 0 Опубликовано: 30 августа 2008 Рассказать Опубликовано: 30 августа 2008 А я понял у Вас дата рождения через дополнительные поля сделана. Ну тогда делаем вот что: ================================================= Открыть файл: /engine/modules/show.short.php ================================================= Найти: } else $tpl->set('{approve}',""); Вставить после: $mas = Array($xfieldsdata['day'],$xfieldsdata['mounth'],$xfieldsdata['year']); $cur_day = date("j"); $cur_month = date("n"); $cur_year = date("Y"); $age = $cur_year - $mas[2]; if( ((int)$mas[1] > $cur_month) || ((int)$mas[1] == $cur_month && (int)$mas[0] > $cur_day) ) $age--; $tpl->set('{age}',$age); ================================================= Теперь в шаблоне короткой новости можете использовать тег {age} для вывода возраста. Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 30 августа 2008 Рассказать Опубликовано: 30 августа 2008 (изменено) Лучще $cur_day = date("j"); $cur_month = date("n"); $cur_year = date("Y"); $age = $cur_year - $xfieldsdata['year']; if( ($xfieldsdata['day'] > $cur_month) || ($xfieldsdata['mounth'] == $cur_month && $xfieldsdata['day'] > $cur_day) ) $age--; if ($age < 10 || $age > 90) $age = "--"; $tpl->set('{age}',$age); Изменено 30 августа 2008 пользователем Al-x Цитата Ссылка на сообщение Поделиться на других сайтах
flake 25 Опубликовано: 30 августа 2008 Рассказать Опубликовано: 30 августа 2008 Автор ура!)) работает) всем спасибо Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.