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