Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запись даты в базу
 
 автор: Panker   (16.09.2013 в 18:40)   письмо автору
 
 

Грубо говоря пишу запись в БД

Поля такие
id
name
e-mail
msg
date


Пишу так


$today = date("d.m.y H:m:s"); 

if (mysql_query("INSERT INTO `guestbook` VALUES ('', '$name', '$mail', '$msg', '$today');")) 


Но в базу пишется почему то такая дата - 2016-09-13 18:09:41

Собственно где-то читал что можно средствами MySQL писать дату, не могли бы подсказать как правильней было бы писать дату в базу при условии что дата нужна типа

Число.Месяц.Год Час:Минута:Секунды

Дамб таблице на всякий случай

CREATE TABLE IF NOT EXISTS `guestbook` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` text NOT NULL,
  `e-mail` text NOT NULL,
  `msg` text NOT NULL,
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

  Ответить  
 
 автор: confirm   (16.09.2013 в 18:57)   письмо автору
 
   для: Panker   (16.09.2013 в 18:40)
 

Формат записи даты в базу и должен быть такой - Y-m-d H:i:s
А при выводе можете ее форматировать как душе угодно либо средствами MySQL, либо РНР.

  Ответить  
 
 автор: Panker   (16.09.2013 в 19:12)   письмо автору
 
   для: confirm   (16.09.2013 в 18:57)
 

ок, большое спасибо, попробовал записать как вы сказали "Y-m-d H:i:s" все сработало

тогда простите, не подскажите как мне теперь выводить в том формате, который нужен мне?

а именно "d.m.y H:m:s"

То есть теперь у меня в базе записано - 2013-09-16 19:09:51, а мне нужно 16.09.2013

Неужели нет варианта изменит формат даты в самой mysql?

  Ответить  
 
 автор: confirm   (16.09.2013 в 19:36)   письмо автору
 
   для: Panker   (16.09.2013 в 19:12)
 

Средствами MySQL так
DATE_FORMAT(`date`, '%e.%m.%Y') `date`

  Ответить  
 
 автор: Panker   (16.09.2013 в 19:42)   письмо автору
 
   для: confirm   (16.09.2013 в 19:36)
 

прошу прощения, а это когда использовать, при выводе или при записи?


Если при записи то как?
Если раньше я писал -
if (mysql_query("INSERT INTO `guestbook` VALUES ('', '$name', '$mail', '$msg', '$today');"))  

То как теперь писать?
Если при выводе то как писать? не поможете? Раньше я примерно так выводил

$ath = mysql_query("select * from guestbook;");
if($ath)
{
  $author = mysql_fetch_array($ath);
  echo "<br>айди = ".$author['id']."<br>";
  echo "имя = ".$author['name']."<br>";
  echo "e-mail = ".$author['e-mail']."<br>";
  echo "сообщение = ".$author['msg']."<br>";
  echo "дата = ".$author['date']."<br>";
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b></p>";
  exit();
}


как теперь выводить что бы с нужно мне датой было?

  Ответить  
 
 автор: confirm   (16.09.2013 в 19:52)   письмо автору
 
   для: Panker   (16.09.2013 в 19:42)
 

Я же вам раньше писал - при записи формат даты должен быть Y-m-d H:i:s
А при выводе можно ее получить в любом другом представлении
Вы спросили как
Я написал вот так
Значит когда показанное мною вам нужно использовать?
$ath = mysql_query("select *, DATE_FORMAT(`date`, '%e.%m.%Y') `date` from guestbook"); 

  Ответить  
 
 автор: Sfinks   (17.09.2013 в 09:45)   письмо автору
 
   для: Panker   (16.09.2013 в 18:40)
 

Средствами MySQL:
mysql_query("INSERT INTO `guestbook` VALUES ('', '$name', '$mail', '$msg', NOW())")

  Ответить  
 
 автор: Jovidon   (18.09.2013 в 13:41)   письмо автору
 
   для: Panker   (16.09.2013 в 18:40)
 

Можно и так
<?php
    $today 
date("d.m.Y H:i:s");
    
    function 
php_to_sql($val){
        list(
$date$time) = explode(" "$val);
        list(
$d,$m,$y) = explode("."$date);
        return 
$y.'-'.$m.'-'.$d.' '.$time;
    }
    
    function 
sql_to_php($val){
        list(
$date,$time) = explode(' ',$val);
        list(
$y,$m,$d) = explode('-'$date);
        return 
$d.'.'.$m.'.'.$y.' '.$time;
    }
?>

  Ответить  
 
 автор: Igorek   (18.09.2013 в 14:37)   письмо автору
 
   для: Jovidon   (18.09.2013 в 13:41)
 

Тогда уж как-нибудь так:

<?php
$custom_date 
'03.07.2011 12:33:00';

$current_mysql_formatted_date strftime('%F %T');
$custom_mysql_formatted_date strftime('%F %T'strtotime($custom_date));

echo 
$current_mysql_formatted_date "\n" $custom_mysql_formatted_date;

  Ответить  
 
 автор: confirm   (18.09.2013 в 15:01)   письмо автору
 
   для: Igorek   (18.09.2013 в 14:37)
 

Лучше тогда так:

date('Y-m-d H:i:s', strtotime($custom_date));

Иначе при отладке на Win можно вообще ничего не получить.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования