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 :: Увеличение даты

 PHP.SU

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


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

> Без описания
snooker
Отправлено: 18 Ноября, 2008 - 22:47:40
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2008  


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

[+]


У меня задача: увеличить дату, забранную из базы данных на определённое число месяцев. Есть какое-то стандартное решение?

Например, я забрал 2008-11-19, а надо сделать 2008-12-19
 
 Top
valenok Модератор
Отправлено: 19 Ноября, 2008 - 07:49:16
Post Id



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


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


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




SELECT DATESUB(`date`, Interval 2 month )


-----
Truly yours, Sasha.
 
My status
 Top
snooker
Отправлено: 19 Ноября, 2008 - 09:09:23
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2008  


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

[+]


Я похоже неправельно свормулировал. Я забираю дату из базы данных. Потом её увеличиваю на 1 месяц. И потом записываё новую дату обратно.
 
 Top
Champion Супермодератор
Отправлено: 19 Ноября, 2008 - 09:53:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




UPDATE table
SET date_ = DATESUB(date_, Interval 2 month )
WHERE condition
 
 Top
snooker
Отправлено: 19 Ноября, 2008 - 15:03:13
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2008  


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

[+]


Я сделал вот так

UPDATE `user` SET `promotionid` = '$f[promotionid]', expiredate = DATESUB(expiredate, Interval $f[month] month ) WHERE `user`.`userid` = $userid

Правда оно не работает... Как правильно?
 
 Top
Вездеход
Отправлено: 19 Ноября, 2008 - 16:04:45
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


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




канешн не работает =)

PHP:
скопировать код в буфер обмена
  1. <? $sql="
  2. UPDATE `user`
  3. SET `promotionid` = '".$f['promotionid']."',
  4. `expiredate` = DATESUB(`expiredate`, Interval ".$f['month']." month )
  5. WHERE `user`.`userid` = '".$userid."'";
  6.  


так пробуйте


Отредактировано модератором: valenok, 19 Ноября, 2008 - 16:52:02


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
snooker
Отправлено: 19 Ноября, 2008 - 16:45:53
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2008  


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

[+]


Так тоже не работает.

Проблема вот в этом expiredate = DATESUB(expiredate, Interval $f[month] month )

если поставить expiredate = '2008-11-20' то работает, а если эту функцию - то нет.
 
 Top
Champion Супермодератор
Отправлено: 19 Ноября, 2008 - 16:48:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




прочитайте сообщение об ошибке, узнаете много интересного.
И, на будущее. Не пробывали текст запроса в браузер вывести?
 
 Top
snooker
Отправлено: 19 Ноября, 2008 - 17:11:38
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2008  


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

[+]


Вот текст запроса в браузере:
UPDATE `user` SET `promotionid` = '1', `expiredate` = DATESUB(expiredate, Interval 1 month ) WHERE `user`.`userid` = '1'

Я не вижу ошибку.... Но она есть... Где?
 
 Top
valenok Модератор
Отправлено: 19 Ноября, 2008 - 17:18:46
Post Id



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


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


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




1. Скопируй еще раз код, я его отредактировал как видишь.
2. http://phpfaq[dot]ru/debug

Если вы всё равно не найдёте ошибки, то это секретная ошибка спец служб пентагона, и она нерешаема, так как ставит под угрозу безопасность государства.


-----
Truly yours, Sasha.
 
My status
 Top
snooker
Отправлено: 19 Ноября, 2008 - 19:30:46
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2008  


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

[+]


Вообщем велика сея мудрость есть. Я решил проблему увеличения даты с помощью функции substr Хорошо
 
 Top
Champion Супермодератор
Отправлено: 20 Ноября, 2008 - 08:46:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




snooker пишет:
решил проблему увеличения даты с помощью функции substr
это через ъопу. А вы не догадывались ПРОЧИТАТЬ СООБЩЕНИЕ ОБ ОШИБКЕ, КОТОРОЕ ВЫДАЕТ MYSQL???? И хотя бы написать его здесь?! Сообщения об ошибках не просто так все-таки придуманы
 
 Top
snooker
Отправлено: 20 Ноября, 2008 - 11:02:42
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2008  


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

[+]


Он давал сообщение, что нет кавычек перед WHERE. Когда я взял DATESUB в кавычки

UPDATE `user` SET `promotionid` = '1', `expiredate` = 'DATESUB(expiredate, Interval 1 month )' WHERE `user`.`userid` = '1'

то ошибки прекратились. Но и добавлял он в базу 0000-00-00

Да знаю я , что это через жопу делать через substr. Но оно уже работает. И теперь можно спокойно искать путь решения проблемы оптимальным способом.

Я признаю честно, что в этих функциях времени я не силён. Всегда их раньше избегал, так как не нашёл нигде нормальной документации по ним.
 
 Top
valenok Модератор
Отправлено: 20 Ноября, 2008 - 11:23:44
Post Id



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


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


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




Champion а тебе не все равно?
Человек обратился за помощью, а советы не слушает.
Пусть будет как ему влезет. С опытом лет за пять исправится.


-----
Truly yours, Sasha.
 
My status
 Top
Champion Супермодератор
Отправлено: 20 Ноября, 2008 - 11:24:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




snooker пишет:
Он давал сообщение, что нет кавычек перед WHERE.
Очень сомневаюсь.
А когда вы взяли в ковычки, добавлялись нули по одной простой причине. По секрету скажу вам, что значения, заключенные в одинарный апостроф - это строка-константа. Если в ней содержатся какие-либо команды, они выполняться не будут. А так, как такую строку в формат даты преобразовать нельзя, вы видели нули.
(Добавление)
valenok пишет:
а советы не слушает.
... С опытом лет за пять исправится.

Откуда же опыт прийдет, если он не хочет понять даже, что копилятор подсказывает ему ошибку прямым текстом?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB