![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Dmitry_177 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
вывод таблицы:
так вот при выводе таблицы, мне нужно знать, есть ли в одном поле таблицы дата или нет.. вот так правильно будет, если поле с датой "date"?
или как-то еще надо определять на нулевую дату значение $select_arr['date']? |
||||
|
|||||
HotHead |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 26.10.2007 Репутация: 3 Всего: 4 |
Dmitry_177, посмотрите в структуре таблицы значение по умолчанию для этого поля. На него и надо проверять. Традиционно это строка '0000-00-00'.
|
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Я совсем забыл про empty
![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Dmitry_177, а при чем здесь empty?
во-первых, эта функция проверяет существование переменной, а переменная однозначно есть. следовательно, половина функционала не используется. во-вторых, как тебе правильно указал HotHead, при наличии дефолтного значения в таблице будет '0000-00-00', а это не пустая строка. еще половина функционала долой. интересная получается мысль - пользоваться функцией, которая на 100% здесь не подходит. |
|||
|
||||
BuShaRt |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Дату лучше всего хранить в int формате, а само содержимое должно являться UnixTime'ом.
Причем установить по умолчанию поле равное нулю. В таком случае
если структуру нельзя уже менять, тогда
|
||||
|
|||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
BuShaRt, вроде бы, HotHead выше показывал, почему empty не подходит для поля date
да и слово "лучше" стоит говорить с осторожностью. Всё-таки, скажем, дату рождения пока ещё не все системы могут хранить в поле типа int |
|||
|
||||
Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: нет Всего: 5 |
Feldmarschall, учить матчасть! В особенности понятие timestamp.
-------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
HotHead |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 26.10.2007 Репутация: 3 Всего: 4 |
Ну тут много тонкостей. Я сам раньше хранил данные в основном в timestamp. Потом перешёл на date, т.к. в MySQL есть куча удобных встроенных функций для работы с датой. Dmitry_177 не говорил в чём он её хранит, так что я предположил что именно в date.
|
|||
|
||||
Dmitry_177 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
да, я в date храню.. кстати говорят что timestamp быстрей обрабатывается чем date.. интересно чем.. может знает кто? и еще такой вопрос про дату: как можно сравнить $select_arr['date'], если она там есть с текущей датой? вот так?
|
||||
|
|||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
врут.
сравнивать надо в запросе. но если надо именно в скрипте, скажем, чтобы раскрасить текущую дату, то да, примерно так. Но только чтобы функция, которую ты используешь в пхп для получения даты, возвращала строку в том же формате, в каком дата хранится в базе. getdate возвращает совсем не то что нужно |
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Да, мне нужно именно в скрипте.. Вот так работает =)))
И кстати empty корректно работает! если даты нету... строка ПУСТАЯ! если даты нет.. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
И ты так перебираешь все строки, коотрые лежат в базе - правильно?
|
|||
|
||||
Dmitry_177 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
нет, проверяю только дату.. а вывожу почти все строки из таблицы..
может это в последней версии PHP так сделали? у меня на компе все новенькое стоит..=))) Если в предыдущих версиях не так, то придется переделывать.. на хосте может одна из более старых версий PHP стоять.. Это сообщение отредактировал(а) Dmitry_177 - 13.12.2007, 23:38 |
||||
|
|||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
А что делаешь, если дата больше, и что - если нет?
А если пустая - что делаешь? Мне кажется, большую часть этих проверок можно убрать в запрос. по поводу empty - дело не в php. а в том, что в базе для этого поля у тебя нет значения по умолчанию. следовательно, туда пишется null. от этого будут проблемы в запросах. |
|||
|
||||
Dmitry_177 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
вывожу ВСЕ строки, делаю один запрос в БД и в цикле каждую строку вывожу.. Если даты нету или если меньше текущей, то добавляю определенную надпись в строке при выводе.. Если есть и она больше текущей то просто дату вывожу.. Я уже думал что-то с запросами придумать, но мне кажется как я делаю всеже для моей задачи лучший выриант..
при создании таблицы в БД я специально этому полю прописал DEFAULT NULL. А проблем в запросах из-за этого я пока что-то не наблюдал.. Это сообщение отредактировал(а) Dmitry_177 - 13.12.2007, 23:52 |
||||
|
|||||
HotHead |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 26.10.2007 Репутация: 3 Всего: 4 |
Ну если вы себе поставили NULL по умолчанию, то всё замечательно. Юзайте empty или is_null. Главное не забывать, что NULL это не пустая строка, не 0 и т.п. с точки зрения MySQL. Соответственно и проверять его в запросе надо будет через IS NULL. В остальном проблем возникнуть не должно. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
HotHead, вот именно - с точки зрения Mysql. поэтому рекомендация про is_null в пхп - не совсем правильная, мягко говоря ;-)
|
|||
|
||||
HotHead |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 26.10.2007 Репутация: 3 Всего: 4 |
Feldmarschall, а вы попробуйте применить на результат запроса, вернувшего NULL, функцию var_dump. Видимо вас ожидает большой сюрприз.
![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Хм. Твоя правда. Я был уверен, что приходит пустая строка. Был неправ.
|
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Во избежание дальнейших недомолвок и вызванных ими непоняток (если, конечно, я сам понял ;) - тут подразумевалось злополучное непонимание отрицательных таймштампов виндами. Отчего гарантированная нижняя граница диапазона дат - лишь 1970-й год, что, разумеется, для дат рождения взрослых юзеров не подходит. К тому же, системы с таймштампом в виде четырехбайтного целого ожидает еще одна хоть и нескорая, но малоприятная перспектива - проблема 2038 года... Это сообщение отредактировал(а) SelenIT - 15.12.2007, 12:03 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |