Заметки

Раздел "заметки" содержит ответы на различные распространенные среди начинающих веб-мастеров вопросы, которые по своему объему не тянут на полноценные статьи. Для заметок, как и для статей и уроков, существует возможность комментирования.

Получение даты из MySQL в PHP

Как известно, в MySQL есть два основных типа данных для хранения дат: date и datetime. Второй вариант, по сути, является расширенным вариантом первого и позволяет помимо даты хранить и время. При извлечении из MySQL данных такого типа мы получаем строки соответственно следующих форматов:

2012-03-03
2012-03-03 12:00:00

Однако в PHP в большинстве функциях работы с датами используется так называемый формат даты Unix timestamp, представляющий из себя число — количество секунд между "эпохой Юникс" (полночью первого января 1970 года) и текущим временем.

Можно при помощи парсинга получить из вышеупомянутых строк значения года, месяца и т.д. и передать их в PHP-функцию mktime, но я предлагаю вариант проще. Существует MySQL-функция Unix_timestamp, которая позволяет преобразовать дату из формата MySQL в формат Unix timestamp на этапе запроса. Используется следующим образом:

SELECT created                 AS created_mysql,
       Unix_timestamp(created) AS created_unix
FROM   articles;

Добавление кириллического домена в Apache

IDN — это доменные имена, которые содержат символы национальных алфавитов. К таким доменам относятся кириллические домены. Кириллические домены сейчас уже не в диковинку. Однако, при настройке Apache для работы с такими доменами есть свои нюансы.

В уроке "Установка и настройка веб-сервера Apache" было показано, как добавлять в Apache традиционные латинские домены. Пусть они были и локальные, суть та же. Сейчас наша цель — добавить кириллический домен.

Для эксперимента у меня есть в распоряжении домен йапапко.рф, я его добавлю в Apache и настрою редирект на ifolder.ru.

Получение случайного HTML-цвета при помощи PHP

Оставлю это тоже здесь, может кому-то пригодится. Этой функцией я раскрашиваю теги в облаке на главной:

function random_html_color()
{
    return sprintf( '#%02X%02X%02X', rand(0, 255), rand(0, 255), rand(0, 255) );
}

Каждая RGB-составляющая цвета генерируется с помощью rand(0, 255), сузив разброс до, скажем, rand(0, 120) можно генерировать случайные, но темные цвета.

Русская дата на PHP

Хочу поделиться функцией, которая позволяет сформировать дату с локализованными месяцами и днями недели:

function rusdate($d, $format = 'j %MONTH% Y', $offset = 0)
{
    $montharr = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
    $dayarr = array('понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье');
 
    $d += 3600 * $offset;
 
    $sarr = array('/%MONTH%/i', '/%DAYWEEK%/i');
    $rarr = array( $montharr[date("m", $d) - 1], $dayarr[date("N", $d) - 1] );
 
    $format = preg_replace($sarr, $rarr, $format); 
    return date($format, $d);
}

Первый параметр — юникс-дата, второй — формат выводимой даты. Оба параметра идентичны параметрам PHP-функции date(), однако в формате можно передать два дополнительных шаблона:

%MONTH% — русское название месяца (родительный падеж)
%DAYWEEK% — русское название дня недели

Перенос плавающих HTML-блоков

Хочу рассказать вам о небольшой хитрости, которую я лично очень часто применяю. При верстке плавающими HTML-блоками (с использованием CSS-стиля float) иногда возникает необходимость принудительно "перенести" определенные блоки на новую строку в независимости от значения стиля float как самих, так и соседних блоков. Для этого может помочь специальный невидимый блок, сформированный следующим образом:
.clearer {
  clear: both;
  display: block;
  font-size: 0;
  line-height: 0;
}
<div class="clearer">&nbsp;</div>