2009-08-05 8 views
0

$ repeat_times = mysql_real_escape_string($ repeat_times); Ifステートメントのロジックが間違っていますか?

$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型があります。

+3

神のために、かっこを使用してください... ;-) –

答えて

1

私の推測によれば、strtotime()はfalseを返すでしょう。

今日は、Unixエポックから14461日を考慮しています。

SQLステートメントを使用してUNIX_TIMESTAMP(datetime)をタイムスタンプとして取得し、その数学をPHPコードから取り出すことができます。

また、$intervalは、アレイを切断する前に計算されています。あなたがあたり、記録に時間を計算したいので、時間の計算コードは、whileループの内側に行くべきタイムスタンプを取り、「間隔」

function get_interval($time) { 
    $diff = time() - $time; 
    // .... calculate interval here 
    return $interval 
} 
1

を返す関数にコードのセクション全体を作ってみましょう(それはwhileループの一部としてのみ取得される$ fetch_arrayを参照しています)

+2

なぜE_NOTICEとE_STRICTでコーディングが役立つのですか? :) – gnarf

関連する問題