2015-12-01 5 views
-1

Я пытаюсь использовать калькулятор возраста this, чтобы рассчитать возраст пользователей, который хранится в базе данных MySQL. Я думал, что это сработает, но, похоже, это не так.Расчет времени, взятый из базы данных MySQL

Моя проблема заключается в том, что я не знаю, как получить дату из таблицы пользователей из MySQL.

<?php 
require_once 'core/init.php'; 

$user = new User(); 

if(!$user->isLoggedIn()) { 
    Redirect::to('index.php'); 
} 

    //date in mm/dd/yyyy format; or it can be in other formats as well 
    $birthDate = "<?php escape($user->data()->birthday); ?>";  //"08/13/2000"; 
    //explode the date to get month, day and year 
    $birthDate = explode("/", $birthDate); 
    //get age from date or birthdate 
    $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md") 
    ? ((date("Y") - $birthDate[2]) - 1) 
    : (date("Y") - $birthDate[2])); 
    echo "Age is: " . $age; 
?> 
+0

Что не работает на вас? – drmonkeyninja

+0

Получение даты из таблицы пользователей MySQL. –

+0

Изменить '' data() -> birthday);?> "' To 'escape ($ user-> data() -> birthday);'. Не нужно помещать это в строку, я уверен, что если это не сработает. –

ответ

1

Я просто написал это простой класс, который использует DateTime класс и связанные с ними методы - должны быть достаточно легко адаптировать строку даты, чтобы быть в правильном формате.

class userage{ 

     private $dob; 
     private $options; 

     public function __construct($dob=false, $options=array()){ 
      $this->dob=$dob; 
      $this->options=(object)array_merge(array(
       'timezone' => 'Europe/London', 
       'format' => 'Y-m-d H:i:s' 
      ),$options); 
     } 

     public function calculate(){ 
      $opts=$this->options; 
      $timezone=new DateTimeZone($opts->timezone); 
      $dob=new DateTime(date($opts->format, strtotime($this->dob)), $timezone); 
      $now=new DateTime(date($opts->format, strtotime('now')), $timezone); 
      $age = $now->diff($dob); 

      $result=(object)array(
       'years'  => $age->format('%y'), 
       'months' => $age->format('%m'), 
       'days'  => $age->format('%d'), 
       'hours'  => $age->format('%h'), 
       'mins'  => $age->format('%i'), 
       'secs'  => $age->format('%s') 
      ); 
      $dob=$now=$age=null; 
      return $result; 
     } 
    } 

    $ua=new userage('1970-09-05'); 
    $age=$ua->calculate(); 

    echo '<pre>',print_r($age,true),'</pre>'; 

/* 
    outputs 
    ------- 
    stdClass Object 
    (
     [years] => 45 
     [months] => 2 
     [days] => 26 
     [hours] => 8 
     [mins] => 53 
     [secs] => 30 
    ) 

*/ 
+0

Это не решает мою проблему. Сам скрипт отлично работает, моя единственная проблема заключается в том, чтобы принимать дату из таблицы пользователей MySQL. –

+0

Я вижу, что 3 минуты назад вы добавили, что сама проблема заключалась в получении данных только от db. Это должен быть довольно простой запрос sql – RamRaider

Смежные вопросы