![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
nz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 13.1.2008 Репутация: нет Всего: нет |
имеется колонка в БД с типом datetime туда записывается дата последнего обращения к файлу
так вот встала задача чтобы удалять этот файл по последнему к нему обращению через 30 дней дата следующего формата: 2001-01-01 01:01:01 пробовал химичить с переменными и вычеслять промежуток между ними (смотрел тут - http://php.com.ua/ru/tips/PRINT/php_mysql_date.htm), но так и ни чего не добился: $time=date("d-m-Y", strtotime($date)); $today=date('d-m-Y'); $time - последняя дата $today - сегодня также нужно вывести информацию о том, когда будет удален файл, тоисть прибавить к $time 30 дней и вывести в том же формате: d-m-Y спасибо за любую информацию |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
возможно ли переправить поле в число?
тогда храним там число таймстэп и все вычисления становятся очень простыми |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
вообще-то, вычисления с полем типа datetime ничуть не сложнее.
nz1, в MySQL богатейшие средства работы с датой. DATE_ADD() решит все твои проблемы. Химичить средствами РНР нет никауой необходимости |
|||
|
||||
gemaglabin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.2.2008 Репутация: нет Всего: нет |
Этот код выдаст тебе юникосвый таймстамп . С помощью time() узнаешь текущее время в unix формате.Вот и считай нужное тебе кол-во.Можно это сделать с помощью СУБД , но php это выполнит быстрее
|
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Если в момент, когда потребуется дата работаем в php - получаем в php, если в mysql - получаем дату в mysql.
таймстамп +30 дней в php:
Это сообщение отредактировал(а) flashaa - 11.2.2008, 13:27 |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
flashaa, во-первых, у него не +30, а -30
Во-вторых, у него нет никакого таймстампа. |
|||
|
||||
flashaa |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
GeneralElectric, если брать сначала дату последней модификации, то как раз плюс.
Если mysql :
Это сообщение отредактировал(а) flashaa - 11.2.2008, 13:41 |
||||
|
|||||
nz1 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 13.1.2008 Репутация: нет Всего: нет |
сделал так: if(strtotime('+ 30 day', $sdate) >= time() ) { //код } где $sdate - дата последнего доступа к файлу в формате datetime но ничего не работает |
||||||
|
|||||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
прошу прощения, был неправ
Это сообщение отредактировал(а) GeneralElectric - 13.2.2008, 09:34 |
|||
|
||||
flashaa |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Что именно должно работать? если вы вставили // код. Вот тестовый скрипт, который создает 2 файла с именами 1 и 2. Первому устанаваливает дату модификации в далекое прошлое, второму - на позавчера - 10 февраля. Затем получает информацию о файлах и проверяет устарели ли они по описанному в моем предыдущем посте алгоритму. Если файл устарел, выводит сообщение. Все правильно выведет - первый устарел.
Вообще если у вас дата модификации хранится в базе, то получение имен файлов, которые просрочены будет выглядеть так:
Только не забудьте подставить ваши данные подключения к серверу, название бд, таблиц, полей , директорию Это сообщение отредактировал(а) flashaa - 12.2.2008, 18:59 |
||||||
|
|||||||
nz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 13.1.2008 Репутация: нет Всего: нет |
flashaa, вот так код выглядит у меня:
где sdate - то самое поле с информацией о дате последнего доступа в поле типа datetime не проходит( |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Что заставляет людей хранить время в формате datetime? Чем unix-формат не устраивает?
Не проверял, но должно работать. |
|||
|
||||
Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
интересный разговор на тему работы с датами в SQL и PHP был здесь -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
1) Тем, что unix_time выглядит как число и не читаем. 2) Метка времени строится относительно смещения GMT - серверы в разных часовых поясах покажут разное время и потому при неаккуратном обращении может быть путаница. Хотя это довольно редкий факт, у меня путаница случалась. 3) Ну и наконец тем, что timestamp не пригоден для дат в далеком прошлом и неближайшем будущем |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Непонятно, что именно не работает? Вообще при работе с SQL-запросами в целях быстрой отладки рекомендуется выводить получаемый запрос. И оценивать его. Т.е. перед отправкой запроса необходимо сделать
Дальше оцениваете запрос, исправляете ошибки, если они есть. Если нет, тогда возьмите этот запрос и напишите его в терминале работы с MySQL - сервером. Посмотрите, каков будет результат. Если ошибка синтаксиса - исправляете. Если ошибок нет, но возвращается отличный от желаемого результат, значит тогда проверяете ещё 2 пункта - корректны ли значения в запросе (хотя после проверки текста запроса этот вопрос должен отпасть), и смотрите собственно вашу базу - есть ли в ней действительно значения, которые подлежат выводу по данному запросу. Если не разберетесь, приводите текст запроса, структуру таблицы (получается с пом. запроса show create table `tbl_name`) и несколько строк таблицы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |