Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу создать формат даты вида: дд-месяц-гггг, дд-месяц-гггг 
:(
    Опции темы
Romati
Дата 28.10.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Всем привет!
Это снова я и снова со своими вопросами. На этот раз по связке mysql+php.
Вобщем, ситуация такова… У незнаю как создать формат даты вида дд-месяц-гггг (т.е. 28 октября 2008)
Есть бд mysql, в ней таблица, а в таблице ячейка 'date' в которой данные хранятся в стандартном виде yyyy-mm-dd
Вопрос: Как реализовать с помощью mysql и php вывод даты в таком формате: 28 октября 2008

По этому поводу у меня были мысли сделать ячейку с форматом не date, а varchar и уже в неё вручную писать «28 октября 2008», но я думаю, что это не сложно автоматизировать...
PM MAIL ICQ   Вверх
HackMan
Дата 28.10.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: нет
Всего: 9



PHP достаточно гибкий язык для работы с датами.

Для начала создай массив с месяцами:
Код

$months = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');


Затем получи дату в формате yyyy-mm-dd:
Код

$date = '2008-10-10';


Затем приведи эту дату в timestamp формат:
Код

$date = strtotime($date);


Ну в дальше форматируй как хочешь:
Код

echo date('d', $date) . ' ' . $months[date('m', $date)-1] . ' ' . date('Y', $date);



--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
teroni
Дата 28.10.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 3
Всего: 22



Код

echo date('j M Y', strtotime('2008-10-28'));
// выводит 28 Oct 2008... можно заменять на месяц так:
$month = array('Oct' => 'октября', 'Nov' => 'ноября');
$date = date('j M Y', strtotime('2008-10-28'));
echo str_replace(array_keys($month), $month, $date);


PM MAIL   Вверх
comtat
Дата 28.10.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Код
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%d %M %Y');

в помощь еще вот http://www.phpclub.ru/mysql/doc/date-and-time-functions.html


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Romati
Дата 28.10.2008, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Мне бы сделать так, чтобы дата сама добавлялась в базу, при создании записи из админки, и уже из базы выводилась на страничку при пользовательском просмотре.

У меня такой код получился:

Код

<?php 
...
...
$result = mysql_query ("SELECT * FROM news WHERE id='$id'",$db);
$myrow = mysql_fetch_array ($result);
?>
<?php 
$months = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
$date = $myrow['date'];
$date = strtotime($date);
echo date('d', $date) . ' ' . $months[date('m', $date)-1] . ' ' . date('Y', $date);
?>

Но не работает. Выводит «0000-00-00» — если пишешь «28 октября 2008 года», а если пишешь по шаблону «yyyy-mm-dd» то и выводит «2008-10-28».

Это сообщение отредактировал(а) Romati - 28.10.2008, 21:26
PM MAIL ICQ   Вверх
Nigel
Дата 28.10.2008, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: нет
Всего: 19



Читайте про функцию strtotime и поймете почему нули.
Цитата
Мне бы сделать так, чтобы дата сама добавлялась в базу, при создании записи из админки, и уже из базы выводилась на страничку при пользовательском просмотре.

Не стоит так делать, больше гемороя получите в будущем, храните дату в виде int или datetime, а преобразование делайте при помощи пхп.
PM MAIL   Вверх
aleko_s
Дата 30.10.2008, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.10.2003
Где: Салоники, Греция

Репутация: нет
Всего: нет



У меня возникла похожая задача smile Старый движёк сайта отображал дату в американском формате.  Требуется малой кровью переделать его так, чтобы даты отображались в "русском" стандарте. Искать по чужим исходникам все селекты и вставлять в них DATE_FORMAT - это очень долго и нудно. Использовать средства php для преобразования формата даты - тоже не проще. Было бы здорово, если бы проблема решалась выдачей мускулу одной команды, подобной, например, SET CHARACTER SET. Будем искать, но опыт подсказывает, что такой штуки нет, и придётся юзать функцию мускула
PM MAIL WWW ICQ   Вверх
aleko_s
Дата 30.10.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.10.2003
Где: Салоники, Греция

Репутация: нет
Всего: нет



По старой греческой традиции отвечаю сам себе. Опыт подсказал неправильно!!! Заходим в командную строку мускула, даём там SHOW VARIABLES; и находим среди множества знакомых и незнакомых слов date_format. По-моему, это оно. Сейчас попробую.
PM MAIL WWW ICQ   Вверх
aleko_s
Дата 30.10.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.10.2003
Где: Салоники, Греция

Репутация: нет
Всего: нет



Лишний раз убеждаюсь, что опыт - штука нужная.. Документация по мускулу про переменные date_format сказала следующее:

date_format

This variable is unused.
#

datetime_format

This variable is unused.
#


Придётся юзать SELECT DATE_FORMAT(тра-ляля......
PM MAIL WWW ICQ   Вверх
krundetz
Дата 31.10.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Romati, при вставке в базу данных даты очень удобно пользоваться функцией MySQL now()

Инсерт в этом случае будет выглядеть так

Код

INSERT INTO `news` (...., `dateAdd`) VALUES (...., now())



--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1240 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.