2009-08-05 7 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; 

왜이 돌아 제니스 (1만4천4백61일) 대신 (15 분 전) 제니스

날짜 시간 함수 테이블이 날짜에 대한 전체 문자열을 반환 그래서 내 테이블에서 DATETIME 유형이있다.

+3

괄호 사용을 시작하십시오. ;-) –

답변

1

내 생각 엔 strtotime()이 false를 반환하는 것입니다.

오늘은 유닉스 시대부터 14461 일이라고 간주합니다.

SQL 문을 사용하여 UNIX_TIMESTAMP (datetime)를 타임 스탬프로 가져 와서 PHP 코드에서 해당 수치를 제거 할 수 있습니다.

또한 배열을 정리하기 전에 $interval을 계산합니다. 당신이 당 기록에 시간을 계산하기 원하기 때문에, 시간 계산 코드는 while 루프 내부에 가야한다

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

"간격을"타임 스탬프를 받아 반환하는 함수에 코드의 전체 절을보십시오 basis (while 루프의 일부로 만 검색되는 $ fetch_array를 참조)

+2

E_NOTICE 및 E_STRICT로 코딩하는 것이 도움이되는 이유는 무엇입니까? :) – gnarf