2012-12-07 127 views
0

嗨,我有一个用户显示在首页的网站。用户在注册时注册他们的出生日期。这存储在我的数据库中。显示年龄从出生日期?

我已经从数据库中拉出用户并显示其位置和名称。

我也试图增加从出生日期算起的年龄。但目前它无法工作,用户的年龄没有被显示出来。

任何人都可以帮我找到我要去哪里错了吗?

代码:

<?php 
$dob = $platinum['dob']; 

function age_from_dob($dob) { 

    list($y,$m,$d) = explode('-', $dob); 

    if (($m = (date('m') - $m)) < 0) { 
     $y++; 
    } elseif ($m == 0 && date('d') - $d < 0) { 
     $y++; 
    } 

    return date('Y') - $y; 

} 

$dob = age_from_dob($dob); 

?> 

<? 

     $platinum_set = get_platinum_users(); 
     while ($platinum = mysql_fetch_array($platinum_set)) { 
      echo" 
      <div class=\"platinumcase\"> 
      <a href=\"profile.php?id={$platinum['id']}\"><img width=80px height= 80px src=\"data/photos/{$platinum['id']}/_default.jpg\" class=\"boxgrid\"/></a><h58> {$platinum['first_name']} {$platinum['last_name']}</h58><br/><br/><h52>{$platinum['$dob']}<br/><br/>{$platinum['location']}</h52> 

      </div>"; 
     } 
    ?> 
+0

它看起来像你使用回声时,而不是你应该有另一套?><?PHP块... – RonaldBarzell

+1

你在第一个if语句,这是分配$ M可能是无意的。将它切换为两个等号而不是一个。 – nickb

回答

0
function age_from_dob($dob) { 
    return DateTime::createFromFormat('Y-m-d',$dob, $tz)->diff(new DateTime('now', $tz))->y; 
} 
+1

虽然示例代码是有帮助的,但这个答案不是。你没有解释这段代码的作用,它是如何工作的,或者它将如何提供帮助。 – Charles

1

我不知道你使用的模板引擎,什么是allowd,什么不可以...但通常最简单的方法是最好的......所以试试这个

<?php 
$dob = $platinum['dob']; 

function age_from_dob($dob) { 

     $dob = '1999-12-03'; 
     $age = date_diff(date_create($dob), date_create('now'))->y; 
     return $age; 
} 

?> 

<? 

     $platinum_set = get_platinum_users(); 
     while ($platinum = mysql_fetch_array($platinum_set)) { 
     $age = age_from_dob($platinum['dob']); 
      echo " 
      <div class=\"platinumcase\"> 
      <a href=\"profile.php?id={$platinum['id']}\"><img width=80px height= 80px src=\"data/photos/{$platinum['id']}/_default.jpg\" class=\"boxgrid\"/></a><h58> {$platinum['first_name']} {$platinum['last_name']}</h58><br/><br/><h52> ".$age." <br/><br/>{$platinum['location']}</h52> 

      </div>"; 
     } 
    ?> 
+0

我如何将它添加到div中,以便它显示给每个铂金用户? –

+0

谢谢,但是当我使用,我得到一个语法错误。 –

+0

对不起...实际上我没有测试它..只是确保你在输出中正确使用了age_from_dob($ platinum ['dob'])的结果......另一种可能的方式是这最后编辑 – Mik

0

我用这个函数返回我的用户的年龄。希望这有助于

function HowOld($DOB) 
    { 
      if($DOB) 
        { 
       $birthday = strtotime($DOB); 
       $date = strtotime(date("Y-m-d ")); 
       $difference = $date - $birthday; 
       $years = $difference/(60 * 60 * 24 * 365); 
       $value = floor($years); 
       return $value; 
      } 
     return false; 
    } 
相关问题