2015-06-23 42 views
0

美好的一天。PHP停止顯示負時間

我,直到事件開始,其顯示時間的腳本:我的劇本是這樣的:

$gameDate = $row['event_date']; 

if($gameDate !== $lastDate){ 
    $calcDate = $gameDate.$time; 
    $calcDate = strtotime(str_replace('/', '-', $gameDate));   
    $remaining = $calcDate - time(); 
    $days_remaining = floor($remaining/86400); 
    $hours_remaining = floor(($remaining % 86400)/3600); 

if($days_remaining < 0 && $hours_remaining < 0){ 
    echo''; 
} 

if($days_remaining == 0){ 
    echo 'Starts In: <span class="timeSpan">'.$hours_remaining.'</span> Hours'; 
} 
else if($days_remaining != 0){ 
    echo' Starts In: <span class="timeSpan">'.$days_remaining.'</span> Days And <span class="timeSpan">'.$hours_remaining.'</span>Hours';  
} 

我的腳本作品完美,事實上它的工作這麼好,它繼續即便算上如果事件已過期因此:

我的問題

enter image description here

任何想法爲什麼它這樣做?我如果說停止這種行爲對我來說看起來不錯...?

回答

1

假設即使事件已經開始並且您不希望顯示負面小時,也需要將您的條件更改爲OR

,並避免執行和顯示負數的代碼的其餘部分,你需要把它放在一個else塊:

if($days_remaining<0 || $hours_remaining<0) { 
        ^^ use OR 
    // Event has already started 
    echo ''; 
} else { 
    // the rest of your code in the `else` block 
} 
+0

我給你說的話,我也想過這個問題,不過我用'或'然後'$ DAYS_REMAINING ='0,但'$ hours_remaining = 0'! (例如12小時)它會不會停止代碼執行,即使它應該?因爲1條件現在評估爲TRUE .. –

+0

@TimothyCoetzee您沒有使用'!=',您正在使用'<',這是正確的,並且會給您正確的結果。所以當小時數變爲負數時,您不會顯示您的櫃檯。當然,你可以添加一個「else if」來在事件發生當天顯示不同的東西。 – jeroen

+0

我正在使用!=作爲一個例子......但是如果你使用'OR'邏輯只有一個條件需要是真的,那麼你知道我在說什麼....對吧?因此,如果還有0天,但仍然有幾個小時,直到開始將不會停止代碼執行...你得到我說的或我錯過了什麼?非常感謝您的持續幫助 –

1

我不知道,其中第一if語句的結束括號是但對於最後兩個,它應該是:

if ($days_remaining == 0 && $hours_remaining >= 0) { 
    echo 'Starts In: <span class="timeSpan">'.$hours_remaining.'</span> Hours'; 
} 
else if ($days_remaining > 0) { 
    echo 'Starts In: <span class="timeSpan">'.$days_remaining.'</span> Days And <span class="timeSpan">'.$hours_remaining.'</span>Hours';  
} 
+0

謝謝,我會給它一個讓你知道的 –

+0

沒問題,但問題是什麼,'回聲'的重點是什麼? '線?我認爲這個'if'陳述可以被拿出來......? – colmde

+0

回聲可以被刪除它只是爲了當事件過期時不顯示任何東西....只是我試過的東西效率不高我知道 –

1

在我看來,你在代碼中有兩個錯誤。首先是檢查日期和時間是否小於0。我覺得應該是

if ($days_remaining<=0 && $hours_remaining<0){ ... 

第二個錯誤是:

else if ($days_remaining != 0){ ... 

該檢查將是真實的,即使$days_remaining爲-2,因爲-2 != 0。所以,這最後一次檢查應該是:

else if ($days_remaining > 0){ ...