Hjælp til relativ tid function
Hej eksperter..Jeg er igang med at lave et meget lille forum ovre i skolen og sidder og arbejder med det herhjemme.
Når folk poster kommentarer til et indlæg vil jeg ikke have der skal vises en dato for hvonår den blev skrevet men mere "twitter-agtigt" med noget relativ tid.. Såsom "Postet for 4 minutter siden" og feks "Postet for 3 dage siden" og minutter osv.
Lidt hen i stil med det her:
function relativeDate($timestamp, $days = false, $format = "M j, Y") {
if (!is_numeric($timestamp)) {
// It's not a time stamp, so try to convert it...
$timestamp = strtotime($timestamp);
}
if (!is_numeric($timestamp)) {
// If its still not numeric, the format is not valid
return false;
}
// Calculate the difference in seconds
$difference = time() - $timestamp;
// Check if we only want to calculate based on the day
if ($days && $difference < (60*60*24)) {
return "Today";
}
if ($difference < 3) {
return "Just now";
}
if ($difference < 60) {
return $difference . " seconds ago";
}
if ($difference < (60*2)) {
return "1 minute ago";
}
if ($difference < (60*60)) {
return intval($difference / 60) . " minutes ago";
}
if ($difference < (60*60*2)) {
return "1 hour ago";
}
if ($difference < (60*60*24)) {
return intval($difference / (60*60)) . " hours ago";
}
if ($difference < (60*60*24*2)) {
return "1 day ago";
}
if ($difference < (60*60*24*7)) {
return intval($difference / (60*60*24)) . " days ago";
}
if ($difference < (60*60*24*7*2)) {
return "1 week ago";
}
if ($difference < (60*60*24*7*(52/12))) {
return intval($difference / (60*60*24*7)) . " weeks ago";
}
if ($difference < (60*60*24*7*(52/12)*2)) {
return "1 month ago";
}
if ($difference < (60*60*24*364)) {
return intval($difference / (60*60*24*7*(52/12))) . " months ago";
}
// More than a year ago, just return the formatted date
return @date($format, $timestamp);
}
Problemet med ovenstående er simpelthen at jeg ikke ved hvordan jeg integrerer det i mit script..
Dog har jeg prøvet at gøre dette:
<?php
if(isset($_POST['submit'])) {
$fornavn = mysql_real_escape_string($_POST['fornavn']);
$efternavn = mysql_real_escape_string($_POST['efternavn']);
$date = date('d/m/y H:i:s');
$q = mysql_query("INSERT INTO names (firstname, lastname, date) VALUES ('$fornavn', '$efternavn', '$date')")
or die (mysql_error());
}
?>
<?php
$q = mysql_query("SELECT * FROM names ORDER BY date DESC")
or die (mysql_error());
while ($r = mysql_fetch_array($q)) {
$date = relativeDate(strtotime(date("$r[date]")));
echo "<a href=\"slet.php?id=$r[id]\">Slet</a><br />";
echo "$r[firstname] $r[lastname]<br />";
echo "$date<br /><br />";
}
?>
- Men så siger den hele tiden "2 months ago" selvom den bliver postet med det samme?! :-S
Håber på noget hjælp..
Tak på forhånd :-)