[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ошибка в коде
NoCash
доброво времени суток форумчане.
столкнулся с такой проблеммой. в середине мая прикрутил удаление просроченных обьявлений. прописал вот такой код
$sql3 = mysql_query("DELETE FROM ".$table." WHERE gnl_kikoz >='".date("d-m-Y")."'");

знак больше или равно поставил потому что на сайте уже достаточно давно действовала доска и уже загромоздилась некому не нужными обьявлениями.
в мае все хорошо работало обьявления удалялиси тогда когда нужно. но вот наступил 1 день лета как все все обьявления удалились и при добавлении нового обьявления. они продолжают удаляться. подскажите в чем причина?



Спустя 3 минуты, 49 секунд (1.06.2010 - 13:08) waldicom написал(а):
Достаточно просто выветси сгенерированный запрос и, думаю, все будет понятно

Спустя 10 минут, 16 секунд (1.06.2010 - 13:19) NoCash написал(а):
дописал print_r($sql3) нарисовал еденичку. только о чем это говорит я так и не понял sad.gif
можно по подробней описать в чем ошибка?
и еще если убрать знак >= и поставить = то все будет хорошо. но вдруг через месяц или через половинку сново случиться такой глюк. это уже будет перебор и большинство клиентов может убежать. поэтому думаю нужно разобраться сейчас. кто может плиз протяните руку помощи подскажите

Спустя 9 минут, 23 секунды (1.06.2010 - 13:28) DedMorozzz написал(а):
а формат данных? Можно веть написать так: 01-04-83 года, а можно 1-4-1983

Спустя 3 минуты, 51 секунда (1.06.2010 - 13:32) NoCash написал(а):
формат данных везде
date("d-m-Y")
в базу записывается как 01-06-2010
так же и на сайте выводиться

Спустя 26 минут, 53 секунды (1.06.2010 - 13:59) DedMorozzz написал(а):
Ага, ну если гришь, что даты именно в таком формате, тогда распечатай кваери, какой вышел, без мускул_кваери, т.е. сам текст запроса. И дай дамп БД, посмотрю, что у тя там

Спустя 4 минуты, 51 секунда (1.06.2010 - 14:03) NoCash написал(а):
DELETE FROM cons_nb_gnl WHERE gnl_kikoz >='01-06-2010' вот так вот выводит
и все записи под чистую удаляет

Спустя 14 минут, 52 секунды (1.06.2010 - 14:18) DedMorozzz написал(а):
Используй Date_format, а не Date. Мускульную ф-ю
И дай дамп БД.

Спустя 22 минуты, 25 секунд (1.06.2010 - 14:41) NoCash написал(а):
к сожалению дамп нету. в этом то вся и проблемма(( sad.gif sad.gif sad.gif

Спустя 3 минуты, 15 секунд (1.06.2010 - 14:44) DedMorozzz написал(а):
1. что с ф-ей Дейт_формат
2. Какой тип поля хранения даты (по умолчанию - Y-m-d)

Спустя 5 минут, 25 секунд (1.06.2010 - 14:49) NoCash написал(а):
опан сан тип в поле для храниния базы вообще варчар((

Спустя 5 минут, 38 секунд (1.06.2010 - 14:55) waldicom написал(а):
выполни в phpmyadmin строку
describe cons_nb_gnl

и результат сюда


Спустя 11 минут, 37 секунд (1.06.2010 - 15:07) NoCash написал(а):
пожайлуста)) я так понимаю так как был тип вар чар поэтому все и удалялось хотя можт и ошибаюсь

Спустя 1 минута, 23 секунды (1.06.2010 - 15:08) waldicom написал(а):
да, поэтому и удалялось...

Спустя 5 минут, 48 секунд (1.06.2010 - 15:14) NoCash написал(а):
все значит теперь я могу быть спокоен за сохранность обьявлений?

Спустя 6 минут, 51 секунда (1.06.2010 - 15:21) SlavaFr написал(а):
а на зачем варчар, если для этого специалные типы естъ.
в твоем случае проишодит сравнение не Даты а Стрингов т.е
выражение
select '02-01-0001'>='01-12-2999';
выдает 1.

1
UPDATE cons_nb_gnl set gnl_kikoz=CONCAT(SUBSTR(gnl_kikoz  FROM 7 FOR 4),'-',SUBSTR(gnl_kikoz  FROM 4 FOR 2),'-',SUBSTR(gnl_kikoz  FROM 1 FOR 2))

2 меняй тип со стринга в date.

Спустя 40 секунд (1.06.2010 - 15:21) DedMorozzz написал(а):
Цитата
2. Какой тип поля хранения даты
... А для даты есть тип "дата". Скажи странно smile.gif

Спустя 8 минут, 6 секунд (1.06.2010 - 15:29) NoCash написал(а):
я вкурсе что есть)) базу формировал не я. да я и не думал что можно в поле дата залипить варчар)))
правда после изменений поля в тип Дата сейчас в него дата записывается тупо 0000-00-00

Спустя 10 минут, 43 секунды (1.06.2010 - 15:40) DedMorozzz написал(а):
ещё разок: дейт_формат

Спустя 7 минут, 26 секунд (1.06.2010 - 15:48) NoCash написал(а):
ага все)) спс) все получилось)) что бы я без вас делал уму не приложу)) вот не за что бы не догадался посмотреть тип у поля))

Спустя 5 минут, 53 секунды (1.06.2010 - 15:54) DedMorozzz написал(а):
С тя пиво rolleyes.gif индекс - 61070 smile.gif

Спустя 1 минута, 5 секунд (1.06.2010 - 15:55) SlavaFr написал(а):
Цитата (NoCash @ 1.06.2010 - 12:29)
правда после изменений поля в тип Дата сейчас в него дата записывается тупо 0000-00-00

ясно, что если ктото дадумался date в стринг превратить, то он и постарался этот дуратский стринг также в дб по дуратскому засунуть.

ищи места где update или insert проводится и переводи стринг который в gnl_kikoz вводится в подходящий формат.

можеш испольсовать в sql CONCAT, который я в верху уже послал, или посредством PHP
implode('-',array_reverse(explode($doof_data) ));

Спустя 4 минуты, 58 секунд (1.06.2010 - 16:00) DedMorozzz написал(а):
SlavaFr, шутишь?
Цитата
implode('-',array_reverse(explode($doof_data) ));
или Date_format?

Спустя 16 минут, 41 секунда (1.06.2010 - 16:16) SlavaFr написал(а):
Цитата (DedMorozzz @ 1.06.2010 - 13:00)
SlavaFr, шутишь?
Цитата
implode('-',array_reverse(explode($doof_data) ));
или Date_format?

нет не шучу.
date_format ты можеш только на тип date() или на стринг, который соответствует типу date употреблять.

1)поле должно однозначно изменится в тип date
2)
высказывание:
Цитата

правда после изменений поля в тип Дата сейчас в него дата записывается тупо 0000-00-00

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

так что я не шутил.

Спустя 2 часа, 1 минута, 17 секунд (1.06.2010 - 18:18) SlavaFr написал(а):
забыл в explode первый параметер. sad.gif
implode('-',array_reverse(explode('-',$doof_data) ));

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.