Неверная логика в утверждении If? - PullRequest
0 голосов
/ 06 августа 2009

$ repeat_times = mysql_real_escape_string ($ repeat_times);

$result = mysql_query("SELECT `code`,`datetime` FROM `fc` ORDER by datetime desc LIMIT 25") or die(mysql_error());

$output .="";
$seconds = time() - strtotime($fetch_array["datetime"]);

if($seconds < 60)
  $interval = "$seconds seconds";
else
 if($seconds < 3600)
     $interval = floor($seconds / 60) . " minutes";
else
    if($seconds < 86400)
         $interval = floor($seconds / 3600) . " hours";
    else
         $interval = floor($seconds / 86400) . " days";

while ($fetch_array = mysql_fetch_array($result)) {

    $fetch_array["code"] = htmlentities($fetch_array["code"]);
    $output .= "<li><a href=\"http://www.***.com/code=" . htmlspecialchars(urlencode($fetch_array["code"])) . "\" target=\"_blank\">" . htmlspecialchars($fetch_array["code"]) . "</a> (" . $interval . ") ago.</li>";

}

$output .="";

return $output;

Почему эта возвращающаяся Дженис (14461 дней) вместо Дженис (15 минут назад)

Таблица функций datetime имеет тип DATETIME в моей таблице, поэтому она возвращает полную строку для даты.

Ответы [ 2 ]

1 голос
/ 06 августа 2009

Код вычисления времени должен идти внутри цикла while, поскольку вы хотите рассчитывать время для каждой записи (это относится к $ fetch_array, который извлекается только как часть цикла while)

1 голос
/ 06 августа 2009

Я думаю, что strtotime () возвращает false.

Учитывая, что сегодня эпоха unix, 14461 день.

Вы можете использовать оператор SQL для извлечения UNIX_TIMESTAMP (datetime) в качестве метки времени и извлечения этой математики из кода php.

Также - Вы вычисляете $interval перед тем, как разбирать массив. Попробуйте превратить весь этот фрагмент кода в функцию, которая принимает метку времени и возвращает «интервал»

function get_interval($time) {
  $diff = time() - $time;
  // .... calculate interval here
  return $interval
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...