Отправляет email-рассылки с помощью сервиса Sendsay

PHP-песочница

  Все выпуски  

PHP-песочница Меняем фон страницы в зависимости от времени суток


Php-«песочница»

Выпуск 20

Здравствуйте. С вами Андрей Чернобай с новым выпуском "PHP - песочницы". Рассылка создана для самых "маленьких" - для тех, кто делает только первые шаги в программировании на PHP. Если Вы хотите двигаться быстрее и освоить создание PHP- сайтов профессионально, рекомендую курс PHP+MySQL для начинающих, потому что в этом курсе собрано всё то, что необходимо именно для создания сайтов, никакой "воды", при этом всё доступно, подробно до мелочей и наглядно.

Для отписки от рассылки внизу страницы есть ссылка. А с остальными продолжим.

В прошлом выпуске я начал выкладывать свою коллекцию скриптов со скрипта, выводящего на страницу сайта времени. Сегодняшний скрипт - продолжение предыдущего. Теперь сделаем так, чтобы в зависимости от времени суток менялся фон страницы.

Меняем фон страницы в зависимости от времени суток

На индексной странице у нас есть заголовок-ссылка "Часы на странице сайта". Можно этот заголовок дополнить таким образом: "Часы на странице сайта и изменение фона в зависимости от времени суток". Ссылка указывает на файл time.php, он снова нам сейчас понадобится - будем просто его дорабатывать.

Запускаем Денвер, открываем time.php в браузере - на странице отображаются часы, показывающие текущее время.

Фон страницы белый по умолчанию. Сделаем так, чтобы фон менялся от времени суток.

Открываем time.php в своём редакторе.

Код сейчас такой:

<?php
//определяем текущее время
$new = time (); //определяем текущее время с помощью функции time ()

$H = date ('H', $new); //определяем часы
$i = date ('i', $new); //определяем минуты

//определяемся со словом "час/часа/часов"
if (($H == 1) || ($H == 21)) //если сейчас один час или двадцать один час, то
{
$hs = "час"; //после количества часов будет слово "час"
}
else if (($H >= 2 && $H <= 4) || ($H >= 22)) //если же время от 2 до 4 часов, то
{
$hs = "часа"; //слово будет "часа"
}
else
{
$hs = "часов"; //во всех прочих случаях будет выводиться слово "часов"
}

// определяем первую цифру количества минут
if ($i < 10)
{
$i0 = $i;
}
else
{
$i0 = $i - floor ($i/10) * 10; //функция floor округляет дроби в сторону уменьшения
}

// определяемся со словом "минута"
if (($i >= 10) && ($i <= 20)) //если текущая минута в диапазоне от 10 до 20 минут, то
{
$is = "минут"; //выводится "минут"
}
else if ($i0 == 1) //если одна минута, например, пять часов одна минута, то
{
$is = "минута"; //выводится "минута"
}
else if (($i0 >= 2) && ($i0 <= 4)) //если от 2 до 4 минут, то
{
$is = "минуты"; //выводится "минуты"
}
else
{
$is = "минут"; //во всех прочих случаях выводится слово "минут"
}

<html>
<head>
<title> Часы на странице сайта </title>
</head>
<body>

<table width="80%" border="1" align="center" bordercolor="#0000FF">
<tr>
<td height="300" valign="top">

<h1> Часы на странице сайта.</h1>
<div align="center" style=""border:#000000" solid 1px; width:300px; background-color:#FFFFFF">

<?php
echo "$H $hs : $i $is"; // вывели время на страницу
?>
</p>

</td>
</tr>
</table>

<p align="center"><a href="index.html">На главную</a></p>

</body>
</html>

Дописываем следующее:

<?php
//определяем текущее время
$new = time (); //определяем текущее время с помощью функции time ()

$H = date ('H', $new); //определяем часы
$i = date ('i', $new); //определяем минуты

//определяемся со словом "час/часа/часов"
if (($H == 1) || ($H == 21)) //если сейчас один час или двадцать один час, то
{
$hs = "час"; //после количества часов будет слово "час"
}
else if (($H >= 2 && $H <= 4) || ($H >= 22)) //если же время от 2 до 4 часов, то
{
$hs = "часа"; //слово будет "часа"
}
else
{
$hs = "часов"; //во всех прочих случаях будет выводиться слово "часов"
}

// определяем первую цифру количества минут
if ($i < 10)
{
$i0 = $i;
}
else
{
$i0 = $i - floor ($i/10) * 10; //функция floor округляет дроби в сторону уменьшения
}

// определяемся со словом "минута"
if (($i >= 10) && ($i <= 20)) //если текущая минута в диапазоне от 10 до 20 минут, то
{
$is = "минут"; //выводится "минут"
}
else if ($i0 == 1) //если одна минута, например, пять часов одна минута, то
{
$is = "минута"; //выводится "минута"
}
else if (($i0 >= 2) && ($i0 <= 4)) //если от 2 до 4 минут, то
{
$is = "минуты"; //выводится "минуты"
}
else
{
$is = "минут"; //во всех прочих случаях выводится слово "минут"
}

// Реализуем изменение цвета фона в зависимости от времени суток
// Вычисляем коэффициент освещённости
// коэффициент должен меняться от 1 - в полдень до 0 - в полночь
if ($H <= 12)
{
$k = $H/12; // коэффициент освещённости равен текущему часу делённому на 12: 1, 11/12, 10/12 ... 0
}
else
{
$k = (24 - $H)/12; // поскольку коэффициент освещённости не может быть больше 1
}
// определяем составляющую цвета

$c = dechex($k * 0xF);
// в строке выше запись 0xF в шеснадцатиричной системе это то же самое, что число 15 - в десятеричной системе. Причём тут 15, задаёте вы вопрос? Белый цвет, как вы, наверняка, помните записывается в шестнадцатиричной системе как #FFFFFF. (Только вы, скорей всего, до сих пор не знали, что это в шестнадцатиричной системе.) Так вот, это самое обозначение белого цвета соответствует числу 15.
// Мы умножаем коэффициент освещённости на обозначение белого цвета, отчего должны получить какой-то оттенок, зависящий от этого коэффициента, который в свою очередь зависит от времени суток.
// а с помощью функции dechex десятиричное значение переводится в шестнадцатиричное
// и переменная $c вставляется в тег body как цвет фона

<html>
<head>
<title> Часы на странице сайта и изменение фона в зависимости от времени суток </title>
</head>
<body style=""background:#<?php" echo "$c$c$c"; ?>">

<table width="80%" border="1" align="center" bordercolor="#0000FF">
<tr>
.......... (и далее всё прежнее)

Сохраните изменения, обновите страницу в браузере. Я, конечно, не знаю, в какое время суток Вы занимаетесь этим скриптом. Если ночь, то фон страницы должен быть чёрным, днём - разных оттенков серого в зависимости от времени дня. Проверить, как меняется цвет в зависимости от времени, можно не дожидаясь, прямо сейчас.

Для этого существует функция

mktime ()

Она переопределяет текущее время.Добавим эту функцию в код после строки:

$new = time (); //определяем текущее время с помощью функции time ()

То есть, так:

<?php
//подготавливаем данные
//определяем текущее время
// $new = time (); //определяем текущее время с помощью функции time ()

$new = mktime (); // чтобы проверить, меняется ли цвет от времени суток, предыдущую строку закомментируем (ставим перед ней два слэша), а эту раскомментируем (убираем слэши впереди). В скобки ставим значение функции от 0 до 24 (время, в которое мы хотим увидеть оттенок экрана)

$H = date ('H', $new); //определяем часы
$i = date ('i', $new); //определяем минуты
............. и т. д.

В скобки добавляем значение, соответствующее времени суток, когда мы хотим увидеть освещённость экрана - от 0 до 24.

Сохраняем изменения, обновляем страницу в браузере...

Успехов.

P. S. Если Вы хотите научиться создавать PHP-сайты профессионально и сэкономить на освоении программирования несколько лет, то Вам сюда.


"PHP + MySQL для начинающих"


P. S. Остальные уроки и статьи по PHP Вы найдёте как всегда здесь. Все возникающие вопросы Вы можете задать, прислав мне письмо на электроный адрес (см. подпись к выпуску) или через форму для добавления комментариев на страницах сайта.

Автор расылки: Андрей Чернобай
kapitansg@yandex.ru


В избранное