2013-09-25 97 views
-4

所以,我試圖編寫一個簡單的函數,在一天的特定時間更改背景顏色,但某些工作不正確。PHP:在一天中的特定時間更改CSS屬性

當我運行PHP時,頁面上的背景顏色是空白的,並且HTML有background-color: ;。它沒有達到blueblack屬性,我想知道爲什麼。

任何想法?

PHP:

<?php 
function backgroundColor(){ 
    $backgroundColor = ''; 

    if (date('H:i') >= strtotime('06:00') && date('H:i') <= strtotime('20:00')){ 
     $backgroundColor == 'blue'; 
    } else { 
     $backgroundColor == 'black'; 
    } 

    return $backgroundColor; 
} 
?> 

HTML:

<html> 
<head> 
    <title></title> 

    <style> 
     body{ 
      background-color: <?=backgroundColor()?> ; 
     } 
    </style> 
</head> 
<body> 
    <?php echo date('H:i')?> 
</body> 
</html> 
+3

'$ =的backgroundColor '藍色';''沒有$的backgroundColor == '藍',' –

+0

@MikeW請參閱 「當我運行PHP ......」 – Keven

+0

我認爲這將是更好的很多更改''標記中的班級,而不是直接在標題中更改樣式。 – Jeemusu

回答

4

你有兩個問題。首先,如果某個時間(作爲時間,I.E. 10:13)形成的時間大於/小於UNIX時間戳的時間,那麼您正在進行檢查。不幸的是這不會起作用。爲了解決這個問題,你應該在strtotime()方法中包裝你的date()調用。

第二個問題是您嘗試使用多個=符號設置值。在PHP中,您使用單個=來設置值。使用多個==來檢查變量是否具有某個值。嘗試下面的修改代碼:

function backgroundColor(){ 
    $backgroundColor = ''; 

    if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <= strtotime('20:00')){ 
     $backgroundColor = 'blue'; 
    } else { 
     $backgroundColor = 'black'; 
    } 

    return $backgroundColor; 
} 
1

您需要使用的strtotime()函數的日期()函數來正確地兩個轉換成等價物。

此外,您使用==比較運算符代替= set運算符。

PHP:

<?php 
function backgroundColor(){ 
    $backgroundColor = ''; 
     if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <=    strtotime('20:00')){ 
    $backgroundColor = 'blue'; 
    } else { 
     $backgroundColor = 'black'; 
    } 
    return $backgroundColor; 
    } 
?> 

HTML:

<html> 
<head> 
    <title></title> 
    <style> 
     body{ 
      background-color: <?php echo backgroundColor();?> ; 
     } 
    </style> 
</head> 
<body> 
    <?php date('H:i');?> 
</body> 
</html> 
1

我想彈出一個宏大的問題,這個整體思路。 PHP不是時區感知語言,因此如果您對訪問者的位置沒有可靠的洞察力,那麼使用服務器端邏輯進行這種類型的主題將在後期引起許多頭痛。也許我可以建議一個更可靠的,儘管完全不同的解決方案,使用Javascript的這個問題。

<script type="text/javascript"> 

function assignBackgroundColor(){ 

    var d = new Date(); 

    var body = document.body; 

    if (d.getHours() > 6 && d.getHours() <= 20){ 

    body.style.backgroundColor = "#0000FF"; //blue 

    }else{ 

    body.style.backgroundColor = "#000000"; //black 

    } 

} 

</script> 

然後在body的onload事件中調用它。

<body onload="assignBackgroundColor();"> 
+0

我提出這個問題,因爲我已經完成了你以前的工作,而且它不值得從長遠來看。 – rfoo

+1

感謝您的建議。我一直在研究'date_default_timezone_set()'將其設置爲默認時區,但不會根據當前用戶的時區動態更改。我會看看這個JS。 – Keven

+0

是的,你必須使用某種位置服務來根據他們的IP猜測用戶的時間,或者提示用戶把它提供給你。所有這些基礎設施有時候都會被告知,當你可以用一些簡單的JavaScript來可靠地完成你需要的一切。 – rfoo