2014-09-18 33 views
0

我试图让PHP向我展示一些timeago功能。我正在循环查看Mysql表中的结果,其中有一个名为“aplicationdate”的列名,格式是数据库中的“Ymd”..但它只是显示了一些负数的大数字,例如-16328 ..以下是我的timeago filev任何帮助,将不胜感激:无法在PHP循环中实现此次Ago功能

<? php 

function timeAgo($time_ago) { 
    $cur_time = date('Y-m-d'); 
    $time_elapsed = $cur_time - $time_ago; 

    $days = round($time_elapsed/86400); 
    $weeks = round($time_elapsed/604800); 
    $months = round($time_elapsed/2600640); 
    $years = round($time_elapsed/31207680); 

    //Days 
    if ($days <= 7) { 
     if ($days == 1) { 
      echo "yesterday"; 
     } else { 
      echo "$days days ago"; 
     } 
    } 
    //Weeks 
    else if ($weeks <= 4.3) { 
     if ($weeks == 1) { 
      echo "a week ago"; 
     } else { 
      echo "$weeks weeks ago"; 
     } 
    } 
    //Months 
    else if ($months <= 12) { 
     if ($months == 1) { 
      echo "a month ago"; 
     } else { 
      echo "$months months ago"; 
     } 
    } 
    //Years 
    else { 
     if ($years == 1) { 
      echo "one year ago"; 
     } else { 
      echo "$years years ago"; 
     } 
    } 
} 

?> 

这里是它是如何在另一个文件名为profile.php落实,TIMEAGO文件包含在这一个

<? php 

$mysqli = new mysqli("localhost", "root", "", "cx"); 

/* check connection */ 
if ($mysqli - > connect_errno) { 
    printf("Connect failed: %s\n", $mysqli - > connect_error); 
    exit(); 
} 


$idced_history = $_GET['idced']; 

$query = "SELECT * FROM applications WHERE idced='$idced_history'"; 

if ($result = $mysqli - > query($query)) { 

    while ($row = $result - > fetch_assoc()) { 

     $curenttime = $row["applicationdate"]; 
     $time_ago = strtotime($curenttime); 

     echo "<br><b>Applied On:</b> ".$row["applicationdate"]." ".timeAgo($time_ago)." <br>"; 


    } 

    $result - > free(); 
} 

$mysqli - > close(); 
?> 
+1

请删除一堆无关的代码 – Yang 2014-09-18 17:00:37

回答

2

$cur_time是一个字符串,而不是一个号码。看起来你需要在使用它之前将它转换为Unix时间戳。因此,使用time(),而不是date()

$cur_time = time(); 

(这是假设$time_ago也是一个UNIX时间戳)

+0

谢谢你这么多的人 – 2014-09-18 17:18:14