Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php + mysql (дата) 
:(
    Опции темы
Dmitry_177
Дата 12.12.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



вывод таблицы:
Код

$select_q = mysql_query("SELECT * FROM table WHERE ...);
while($select_arr = mysql_fetch_array($select_q))
  {
...вывод
  }

так вот при выводе таблицы, мне нужно знать, есть ли в одном поле таблицы дата или нет.. вот так правильно будет, если поле с датой "date"?
Код

if ($select_arr['date'] == 0)
  {
    дата не установлена
  }

или как-то еще надо определять на нулевую дату значение $select_arr['date']?
PM MAIL   Вверх
HotHead
Дата 12.12.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 26.10.2007

Репутация: 3
Всего: 4



Dmitry_177, посмотрите в структуре таблицы значение по умолчанию для этого поля. На него и надо проверять. Традиционно это строка '0000-00-00'.
PM MAIL   Вверх
Dmitry_177
Дата 12.12.2007, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Я совсем забыл про empty smile 
PM MAIL   Вверх
Feldmarschall
Дата 12.12.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Dmitry_177, а при чем здесь empty? 
во-первых, эта функция проверяет существование переменной, а переменная однозначно есть. следовательно, половина функционала не используется.
во-вторых, как тебе правильно указал HotHead, при наличии дефолтного значения в таблице будет '0000-00-00', а это не пустая строка. еще половина функционала долой.
интересная получается мысль - пользоваться функцией, которая на 100% здесь не подходит.
PM   Вверх
BuShaRt
Дата 13.12.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Дату лучше всего хранить в int формате, а само содержимое должно являться UnixTime'ом.
Причем установить по умолчанию поле равное нулю. В таком случае
Код

if ($date > 0 ) {дата установлена}

если структуру нельзя уже менять, тогда
Код

if (!empty($date )) {дата установлена}

PM MAIL   Вверх
Feldmarschall
Дата 13.12.2007, 15:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



BuShaRt, вроде бы, HotHead выше показывал, почему empty не подходит для поля date
да и слово "лучше" стоит говорить с осторожностью. Всё-таки, скажем, дату рождения пока ещё не все системы могут хранить в поле типа int
PM   Вверх
Astraller
Дата 13.12.2007, 15:30 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL WWW ICQ   Вверх
HotHead
Дата 13.12.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 26.10.2007

Репутация: 3
Всего: 4



Ну тут много тонкостей. Я сам раньше хранил данные в основном в timestamp. Потом перешёл на date, т.к. в MySQL есть куча удобных встроенных функций для работы с датой. Dmitry_177 не говорил в чём он её хранит, так что я предположил что именно в date.
PM MAIL   Вверх
Dmitry_177
Дата 13.12.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Цитата

Dmitry_177 не говорил в чём он её хранит, так что я предположил что именно в date.

да, я в date храню..

кстати говорят что timestamp быстрей обрабатывается чем date.. интересно чем.. может знает кто?

и еще такой вопрос про дату: как можно сравнить $select_arr['date'], если она там есть с текущей датой? вот так?
Код

if($select_arr['date'] > getdate())
{
  дата в БД больше нынешней даты..
}

PM MAIL   Вверх
Feldmarschall
Дата 13.12.2007, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32




Цитата(Dmitry_177 @  13.12.2007,  22:42 Найти цитируемый пост)
говорят что timestamp быстрей обрабатывается чем date


врут.

Цитата(Dmitry_177 @  13.12.2007,  22:42 Найти цитируемый пост)
как можно сравнить $select_arr['date'], если она там есть с текущей датой? вот так?


сравнивать надо в запросе.
но если надо именно в скрипте, скажем, чтобы раскрасить текущую дату, то да, примерно так. Но только чтобы функция, которую ты используешь в пхп для получения даты, возвращала строку в том же формате, в каком дата хранится в базе. getdate возвращает совсем не то что нужно
PM   Вверх
Dmitry_177
Дата 13.12.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Да, мне нужно именно в скрипте.. Вот так работает =)))
Код

if($select_arr['date'] > date("Y-m-d H:i:s"))
{
  дата в БД больше нынешней даты..
}


И кстати empty корректно работает! если даты нету... строка ПУСТАЯ! если даты нет..
PM MAIL   Вверх
Feldmarschall
Дата 13.12.2007, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



И ты так перебираешь все строки, коотрые лежат в базе - правильно?

PM   Вверх
Dmitry_177
Дата 13.12.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Цитата

И ты так перебираешь все строки, коотрые лежат в базе - правильно?

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

Цитата

И кстати empty корректно работает! если даты нету... строка ПУСТАЯ! если даты нет..


может это в последней версии PHP так сделали? у меня на компе все новенькое стоит..=))) Если в предыдущих версиях не так, то придется переделывать.. на хосте может одна из более старых версий PHP стоять..

Это сообщение отредактировал(а) Dmitry_177 - 13.12.2007, 23:38
PM MAIL   Вверх
Feldmarschall
Дата 13.12.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



А что делаешь, если дата больше, и что - если нет?
А если пустая - что делаешь?
Мне кажется, большую часть этих проверок можно убрать в запрос.

по поводу empty -  дело не в php. а в том, что в базе для этого поля у тебя нет значения по умолчанию. следовательно, туда пишется null. от этого будут проблемы в запросах.
PM   Вверх
Dmitry_177
Дата 13.12.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Цитата

А что делаешь, если дата больше, и что - если нет?
А если пустая - что делаешь?
Мне кажется, большую часть этих проверок можно убрать в запрос.

вывожу ВСЕ строки, делаю один запрос в БД и в цикле каждую строку вывожу.. Если даты нету или если меньше текущей, то добавляю определенную надпись в строке при выводе.. Если есть и она больше текущей то просто дату вывожу.. Я уже думал что-то с запросами придумать, но мне кажется как я делаю всеже для моей задачи лучший выриант..

Цитата

по поводу empty -  дело не в php. а в том, что в базе для этого поля у тебя нет значения по умолчанию. следовательно, туда пишется null. от этого будут проблемы в запросах.

при создании таблицы в БД я специально этому полю прописал DEFAULT NULL. А проблем в запросах из-за этого я пока что-то не наблюдал..

Это сообщение отредактировал(а) Dmitry_177 - 13.12.2007, 23:52
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1064 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.