Сайтостроительство (8)

PHP-кодинг (25)

Веб-дизайн (9)

DHTML/JavaScript (8)

Подкастинг (1)

Безопасность в PHP (3)

Секретный раздел

Карта блога

Регистрация пользователей на PHP+MySQL

Скрипт гостевой книги с красивым дизайном

Галерея на jQuery

Простая система регистрации пользователей на сессиях

Галерея на php+jquery

Форма обратной связи с защитой типа капча

Шаблоны запросов и placeholders

Быстрое перенаправление средствами php

Flash плеер для вашего сайта

Сортировка столбцов в таблице на php+mysql

Галерея на jQuery

Простая система регистрации пользователей на сессиях

Cистема навигации сайта

Профессиональное РНР программирование

Ссылки для начинающих веб-разработчиков

За весь период

За 2010-11

За 2009-06

За 2009-05

За 2009-04

За 2009-03

За 2009-02

За 2008-08

Бегун контекстная реклама

Ruseller видеоуроки

Letitbit файлообменник

Tak.Ru $$$ вебмастеру

WMmail почтовые рассылки

WMlink продажа трафика

Sape.Ru продажа ссылок

Главная » PHP-кодинг

Форматный вывод даты из базы

Все мы знаем, что в таблице БД MySQL дата храниться по умолчанию в формате YYYY-MM-DD, тип данных DATE, где
YYYY - год (четырехзначный формат)
MM - месяц (двухзначный формат)
DD - день (двухзначный формат)

При выводе данных на страничку такой формат не очень удобен восприятию. Наиболлее удобным считается формат вывода даты в виде: DD.MM.YYYY.

Как это реализовать, если в самой таблице дата храниться в другом порядке следования цифр? Да очень просто!

Для наглядности, приведу пример как сделать запрос на извлечение заметок на сайте, в которых нужно вывести дату добавления заметки в формате DD.MM.YYYY


$result = mysql_query("SELECT id,cat,title,description,DATE_FORMAT(date,'%d.%m.%Y') AS date,author,mini_img,view,rating,q_vote FROM data WHERE cat='$cat' ORDER BY date DESC LIMIT $start, $num",$db);

Из привиденного выше запроса, видно, что для преобразования формата нам потребовалось записать извлекамое поле даты в таком формате:
DATE_FORMAT(date,'%d.%m.%Y') AS date

То есть, для преобразования в соответствующий формат нам понадобилась внутренняя функция mysql DATE_FORMAT для форматного вывода даты. Первым аргументом в ней указывается поле date, а вторым - в кавычках сама строка с символами обозначений, которые разделены между собой знаком "%" и точкой. После записи этого выражения обязательно должно идти "AS date" это означает, что такое преобразование будет сделано именно для поля "date" в таблице.

И теперь в извлеченном массиве $myrow["date"], хранящем дату заметки будет у нас уже будет храниться дата в нужном нам формате.

Аналогичным образом сделаете преобразование даты в запросах на извлечение комментарив на вашем сайте, с одной лишь разницей, что если ваша дата добавления комментария храниться в формате DATETIME, т.е. дата+время, то формат поля даты в запросе будет такой:


DATE_FORMAT(date,'%d.%m.%Y %h:%i:%s') AS date

Вот и всё! Применяйте и пользуйтесь! =)

В качестве справки к этому уроку приведу подробный анализ строковых параметров php-функции даты date()


date()
Возвращает строку, отформатированную в соответствии со строкой формата.
В строке формата распознаются следующие символы: 
•	a - "am" или "pm" 
•	A - "AM" или "PM" 
•	B - время Swatch Internet 
•	d - день (число) месяца, 2 цифры с ведущим нулём, если необходимо; т. е. от "01" до "31" 
•	D - день недели, буквенный, 3 буквы; например, "Fri" 
•	F - месяц, буквенный, long; например, "January" 
•	g - час, 12-часовой формат без ведущих нулей; т.е. от "1" до "12" 
•	G - час, 24-часовой формат без ведущих нулей; т.е. от "0" до "23" 
•	h - час, 12-часовой формат; т.е. от "01" до "12" 
•	H - час, 24-часовой формат; т.е. от "00" до "23" 
•	i - минуты; т.е. от "00" до "59" 
•	I (заглавная i) - "1", если Daylight Savings Time, "0" - в противном случае. 
•	j - день (число) месяца без ведущих нулей; т.е. от "1" до "31" 
•	l ('L' в нижнем регистре) - день недели, буквенный, long; например, "Friday" 
•	L - boolean, указывающее, високосный ли год; т.е. "0" или "1" 
•	m - месяц; т.е. от "01" до "12" 
•	M - месяц, буквенный, 3 буквы; например, "Jan" 
•	n - месяц без ведущих нулей; т.е. от "1" до "12" 
•	O - Разница с временем по Гринвичу, в часах; например, "+0200" 
•	r - RFC 822 формат даты; например, "Thu, 21 Dec 2000 16:01:07 +0200" (введён в PHP 4.0.4) 
•	s - секунды; т.е. от "00" до "59" 
•	S - простой английский суффикс для дня (числа) месяца, 2 символа; т.е. "st", "nd", "rd" или "th" 
•	t - количество дней в данном месяце; т.е. от "28" до "31" 
•	T - установка Timezone/Часовой пояс на данной машине; например, "EST" или "MDT" 
•	U - секунды эпохи Unix Epoch (начиная с January 1 1970 00:00:00 GMT) 
•	w - день недели, числовой, т.е. от "0" (Sunday) до "6" (Saturday) 
•	W - ISO-8601 номер недели в году, недели начинаются с понедельника/Monday (введено в PHP 4.1.0) 
•	Y - год, 4 цифры; например, "1999" 
•	y - год, 2 цифры; например, "99" 
•	z - день года; т.е. от "0" до "365" 
•	Z - смещение часового пояса, в секундах (т.е. от "-43200" до "43200"). Смещение часовых поясов к западу от UTC всегда отрицательное, а для поясов в востоку от UTC - всегда положительное.

Бонус урока:
Я раскажу вам, как вывести в комментариях для каждого конкретно пользователя его личную информацию на сайте, в часности откуда он(город), дату его регистрации на сайте и количество сообщений.

Для этого, во вложенном в цикл do (для вывода комментариев) запрос добавьте поля "date" и "city" следующим образом


$ava = mysql_query("SELECT city,avatar,DATE_FORMAT(date,'%d.%m.%Y') AS date FROM users WHERE username='".$myrow3['author']."'",$db);

Для вывода числа сообщений пользователя внутри цикла вывода сообщений, сразу после выражения: $av = mysql_fetch_array($ava); добавьте следующий запрос:


$mess = mysql_query("SELECT id FROM comments WHERE author='".$myrow3['author']."'",$db);

И там, где нужно вывести информацию об юзере, например под аватаркой добавьте следующий код:


echo "Регистрация: ".$av['date']."
Откуда: ".($av['city']==NULL?"—":"".$av['city']."")."
Сообщений: ".mysql_num_rows($mess)."
";

Таким образом, информация будет выводиться только для зарегистрированного пользователя, в частности дата его регистрации - $av['date'] и город его проживания - $av['city'] и число сообщений При этом если, пользователь не указал город в его аккаунте, т.е. его не существует ($av['city']==NULL), то выводиться прочерк "-".

Комментировать

Автор: admin | Добавлена: 30.04.2009 | Просмотров: 10933
Рейтинг: 35 | Голосов: 7

Оцените заметку: 1 2 3 4 5

Последние обновления в категории: PHP-кодинг

Комментарии (0)

Комментариев пока нет!

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

Логин:
Пароль:
 

Регистрация

: Тема:

Заметок в базе: 56
Комментариев: 0
Всего юзеров: 114
Сейчас онлайн: 1