записването на дата във БД

suzka

Registered
Здравейте на всички четящи този форум.Реших да потърся помощ тук и да не пускам нова тема,понеже ми се струва че проблемът ми е сходен с разискваното.Как може да се приспособи кода от тази тема http://web-tourist.net/login/login/view.php?st=809 за PHPBB3 за да изкарам в последните мнения,наред с датата на мнението и от кой е то–и преди колко време е било публикувано мнението-нещо такова (преди "X"дни, "X"часа, "X"минути, "X"секунди).Опитвах различни варянти но не мога да задам правилно променливите–получават ми се в различни формати.Благодаря предварително.
 
По-добре дай малко код, защото в поста, който е даден е доста ясно и не се знае къде точно изпитваш трудност?
 
functions_display.php
Код:
$start = $last_post_time ;
$now = strtotime ("now");
$then= strtotime ("$start"); 
$difference = $now - $then ;
$num = $difference/86400;
$days = intval($num);
$num2 = ($num - $days)*24;
$hours = intval($num2);
$num3 = ($num2 - $hours)*60;
$mins = intval($num3);
$num4 = ($num3 - $mins)*60;
$secs = intval($num4);
Проблема е с променливите $start, $now и $then мисля аз.Така както е кода ми отчита някакво ненормално време–преди 15293 дни, 13 часа, 38 минути и 17 секунди.
 
Слънце, да беше дала и съдържанието на $last_post_time. Според мен там ти е проблема, защото следния код, който си дала с минимални промени от мен:
PHP:
<?php
date_default_timezone_set('Europe/Sofia');
$last_post_time='2011-05-28 23:59:00';

$now = strtotime("now");
$then= strtotime ($last_post_time);
$difference = $now - $then ;
$num = $difference/86400;
$days = intval($num);
$num2 = ($num - $days)*24;
$hours = intval($num2);
$num3 = ($num2 - $hours)*60;
$mins = intval($num3);
$num4 = ($num3 - $mins)*60;
$secs = intval($num4); 

echo "Today is ".date('Y-m-d H:i:s',$now).", Last post time is ".date('Y-m-d H:i:s',$then)."\n<br/>";
echo "Before $days days $hours hours $mins mins and $secs secs";
?>

връща следното:
Today is 2011-11-15 20:18:51, Last post time is 2011-05-28 23:59:00
Before 170 days 21 hours 19 mins and 51 secs

което според мен е ОК. Преди изчисленията си покажи променливата var_dump($last_post_time) и сигурно ще видиш проблема.
 
Хубаво ама ти си задал $last_post_timе да е твърдо '2011-05-28 23:59:00',а времето е различно при всяко ново мнение.Мисълта ми е как да се дефинира $last_post_time да взима винаги времето на последното мнение.Във файла е зададено така $last_post_time = $user->format_date($row['forum_last_post_time']); но за целта не ми се получава.
 
За да работи правилно фрагмента, който си дала трябва в $then да има timestamp на датата, от която смяташ. Ако беше погледнала във файла session.php или в базата данни щеше да установиш че $user->format_date() приема като първи параметър timestamp, т.е. не е нужна някаква конверсия. Пробвай така:

PHP:
$start = $row['forum_last_post_time'] ;
$now = strtotime ("now");
$then= strtotime ("$start");
$difference = $now - $then ;
$num = $difference/86400;
$days = intval($num);
$num2 = ($num - $days)*24;
$hours = intval($num2);
$num3 = ($num2 - $hours)*60;
$mins = intval($num3);
$num4 = ($num3 - $mins)*60;
$secs = intval($num4);
 
Благодаря ти,аз вчера го направих така
Код:
$then = $row['forum_last_post_time'];
$now = time();
$difference = $now - $then ;
Сега трябва да го усъвършенстваме .Как да направим проверката и ако дните или часовете или минутите са "0"–да не ги изписва.Примерно ако са иминали само секунди от поста да изпише само–Преди еди колко си секунди,а не–Преди 0 дни,0 часове,0 минути и еди колко си секунди?
 

Back
Горе