2013-09-25 3 views
-4

Итак, я пытаюсь написать простую функцию, которая меняет цвет фона в определенное время суток, но что-то не работает правильно.PHP: изменение атрибута CSS в определенное время суток

Когда я запускаю PHP, цвет фона на странице пуст, а HTML - background-color: ;. Он не достигает атрибутов blue или black, и я хотел бы знать, почему.

Любые идеи?

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. К сожалению, это не сработает. Чтобы решить эту проблему, вы должны обернуть свои date() звонки в методе strtotime().

Вторая проблема заключается в том, что вы пытаетесь установить значения, используя несколько знаков =. В 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 - это не язык, основанный на часовом поясе, поэтому этот тип темы с использованием логики Server-Side вызовет много головной боли позже, если у вас нет надежного представления о местоположении ваших посетителей. Возможно, я мог бы предложить более надежное, хотя и совершенно другое решение этой проблемы, используя 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> 

Тогда просто назовите его во время события onload для тела.

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

Я поднимаю это, потому что я сделал то, что вы делали раньше, и это просто не стоило того в долгосрочной перспективе. – rfoo

+1

Спасибо за совет. Я смотрел на 'date_default_timezone_set()', чтобы установить его в часовой пояс по умолчанию, но он не будет динамически изменяться в соответствии с часовым поясом текущего пользователя. Я посмотрю на это JS. – Keven

+0

Да, вам нужно использовать какую-то услугу определения местоположения, чтобы угадать время пользователя на основе своего IP-адреса или предложить пользователю передать его вам. Вся эта инфраструктура иногда не рекомендуется, когда вы можете сделать все, что вам нужно, с помощью простого javascript. – rfoo

Смежные вопросы