Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите разобраться с DATETIME

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
IOpeH
Отправлено: 29 Ноября, 2007 - 15:14:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




ситуация такая: в таблице есть столбец который должен содержать дату, создан был так (... , date DATETIME, ...) только тип без всяких доп. параметров, добавляю данные я такой командой (INSERT INTO t_name(date) VALUES("'.date("Y-j-n H:m:s").'") , вроде абсолютно в таком же формате, как и надо для этого типа...

а когда достаёшь данные то получаються одни нули (такие вот 0000-00-00 00:00:00)

ЗЫ думаю что это ещё при записи что то не соответствует и и поэтому записывается так, а когда достаёшь, то достаёться то всё корректно...

В чём моя проблема ?
 
 Top
EuGen Администратор
Отправлено: 29 Ноября, 2007 - 15:26:20
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




date("j") - возвращает день месяца без ведущих нулей. Поэтому вносится в базу нечто вроде "2007-2-01", что не есть правильно.
Нужно делать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query="INSERT INTO t_name(date) VALUES(NOW())";
  3.  

Так логичнее. Да и смотрите
http://php.su/functions/?date , если хотите пользоваться функцией даты для этих целей.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
T-Mon
Отправлено: 29 Ноября, 2007 - 15:47:25
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Может логичнее вообще хранить в базе абсолютное время в секундах со времен чего-то-там, а при необходимости конвертировать.
 
 Top
EuGen Администратор
Отправлено: 29 Ноября, 2007 - 15:57:51
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А по-моему это и есть верх нелогичности


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
IOpeH
Отправлено: 29 Ноября, 2007 - 16:21:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Цитата:
Может логичнее вообще хранить в базе абсолютное время

не мне надо именно такое,

работет NOW() Радость

EuGen, может ещё поможешь , а то я тут совсем затупил...
есть у нас такой код
Цитата:

if(mysql_query('SELECT * FROM t_name WHERE ip LIKE "'.$_SERVER['REMOTE_ADDR'].'"') != TRUE) mysql_query('INSERT INTO t_name(ip) VALUES("'.$_SERVER['REMOTE_ADDR'].'");', $link);

почему то запрос на поиск ip выдаёт всегда TRUE не зависимо от того есть в таблице такой IP или нет
 
 Top
valenok
Отправлено: 29 Ноября, 2007 - 16:40:13
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




php.net/mysql_query


-----
Truly yours, Sasha.
 
My status
 Top
IOpeH
Отправлено: 29 Ноября, 2007 - 16:51:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Цитата:
php.net/mysql_query


читал я уже , я всегда сначало стараюсь прочитать оф описание а потом попробовать и так и сяк , а уж только в самую последнюю очередь - задать вопрос на форуме
 
 Top
EuGen Администратор
Отправлено: 29 Ноября, 2007 - 19:03:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




mysql_query($query) в случае, если запрос был на выборку, вернет указатель на ресурс. Так что Ваше сравнение вообще бессмысленно.
Делайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $res=mysql_query('SELECT * FROM t_name WHERE ip LIKE "'.$_SERVER['REMOTE_ADDR'].'"');
  3. if (!mysql_num_rows($res))
  4.    mysql_query('INSERT INTO t_name(ip) VALUES("'.$_SERVER['REMOTE_ADDR'].'");', $link);
  5.  

И читайте:
http://php.su/functions/?mysql-query
и
http://php.su/functions/?mysql-num-rows


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
IOpeH
Отправлено: 29 Ноября, 2007 - 19:41:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




да я и сам уже вроде понял , что там не TRUE OR FALSE , а как раз указатель на ресурс , а TRUE получаеться потому что значение не равно нулю ...

а EuGen, как всегда выручает...
и вообще респект тебе! Улыбка
 
 Top
EuGen Администратор
Отправлено: 29 Ноября, 2007 - 19:51:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Сравнение "не получается", потому что оно у Вас "!=", а это значит, что php будет приводить типы данных, и это приведет их к тому, что, так как указатель - вполне определенная переменная, она будет посчитана как "равная" true.
Про сравнения советую почитать еще:
http://php.su/learnphp/operators/?compar


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
T-Mon
Отправлено: 29 Ноября, 2007 - 23:44:11
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Почему? По-мойму, с таким форматом легче настраивать время относительно временных зон, при переходе на летнее время, при сравнении, сколько времени прошло от одного события до другого. В принципе, не факт, так как существует вероятность того, что в php существуют функции для удобной работы и с тем форматом, но я бы хранил все именно в этом, ибо он более гибок к применению.
 
 Top
EuGen Администратор
Отправлено: 30 Ноября, 2007 - 09:54:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Все зависит от задачи конечно, но хранение даты в целочисленном формате (наподобие UNIX_TIMESTAMP) обязывает каждый раз при работе с такой датой делать преобразования.
То есть, нужно что-то изменить в дате - извольте преобразовать в число сначала; нужно показать пользователю - извольте преобразовать число в дату.
Это, конечно, хорошо, что есть функции UNIX_TIMESTAMP(date) и FROM_UNIXTIME(timestamp, format) в MySQL, но в большинстве случаев придется применять еще другие функции форматирования/преобразования, то есть проделывать двойную работу.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
T-Mon
Отправлено: 30 Ноября, 2007 - 20:11:31
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Но не придется проделывать тройную работу, когда, например, нужно будет сколько дней\часов\минут\секунд прошло со времени одного события до другого, например, сколько времени прошло с последнего визита пользователя: отнял и преобразовал, а не 2 раза преобразовал, отнял и еще раз на вывод преобразовал...
 
 Top
valenok
Отправлено: 01 Декабря, 2007 - 02:20:46
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Смторя чзачем собсвенно вы записываете это время.
Для внутреннего использования -
извините посещать эту страницу чаще чем раз в пять минут нельзя
или для вывода -
последний раз на форуме вы были ..


-----
Truly yours, Sasha.
 
My status
 Top
T-Mon
Отправлено: 01 Декабря, 2007 - 13:05:48
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Вот именно: сколько времени прошло споследнего визита, создания темы, написания сообщения, скачивания и т.д. Еще удобно, если считать сколько времени человек провел на форуме.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB