powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Smarty] Как сделать вывод значения по условию?
19 сообщений из 19, страница 1 из 1
[Smarty] Как сделать вывод значения по условию?
    #38672276
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задача.

ячейка содержит по умолчанию значения 0000-00-00 00:00:00
как сделать if else, чтобы из ячейки вывести все, что не содержит нулевые значения даты-времени
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38672350
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осталось догадаться, что это за ячейка и какой ЯП используется.
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38672361
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

{$users[user_loop].users_update} выводит, всё что содержится в ячейке users_update (datetime)
а там либо 0000-00-00 00:00:00, либо заполнено дата-время

суть,

если дата-время, выводим дата-время, иначе, ничего не выводим
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38672461
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это Smarty или что другое?
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38672506
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

да смарти

Модератор: Название топика откорректировано.
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38672764
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а что мешает, просто в IF сравнить и всё ?

Код: html
1.
{if $users[user_loop].users_update != 0000-00-00 00:00:00'} {$users[user_loop].users_update} {else}   {/if}
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38672813
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чувак, срочно исправляй...я не рылся в причинах, но у меня тоже было такое значение по умолчанию в базе, и нормально работало, а при переносе вроде на стаким же ПО другой сервер, начало ругаться про недопустимое значение ....

ЗЫ
структура базы на обе машины выгружалась из одной и той же модели .=== полностью идентична.
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673045
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anvano,

белый лист даёт пробовал
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673057
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453,

а как исправлять? создать поле с другим типом? сейчас там тип поля DATETIME

есть таблица users в поле которой users_update записываются периодически данные DATETIME
по истечении суток скрипт удаляет оттуда данные и остаются по умолчанию 0000-00-00 00:00:00

это по базе.

а по пхп, надо чтобы через if-else выводилось из базы но НЕ 0000-00-00 00:00:00, а даты обновления
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673125
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя_87alex564657498765453,

а как исправлять? создать поле с другим типом? сейчас там тип поля DATETIME

есть таблица users в поле которой users_update записываются периодически данные DATETIME
по истечении суток скрипт удаляет оттуда данные и остаются по умолчанию 0000-00-00 00:00:00

это по базе.

а по пхп, надо чтобы через if-else выводилось из базы но НЕ 0000-00-00 00:00:00, а даты обновления

ну ты смотри сам, мне важно в моей логике было, чтобы это самое время было или больше равно, или меньше последнего_контрольного...я поставил по умолчанию 1971-01-01 00:00:00
и оно было меньше естесвенно чем последнего_контрольного(), а если уже апдейтилось, то больше последнего_контрольного().

у меня правда было таймстемп, но у тебя похожее
документацияThe DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'


как и для юникс-тайм-стемпа, нимимум не равен нулю...

тебе что нужно, если дата есть или нету.
1)разрешить значение НУЛЛ и ставить его вместо нулей.

2)ставить минимальную
(но тут надо учесть временные зоны...) дело в том, что
когда ты ставишь в базу время, по умолчанию оно в временой зоне клиента, и в базу будет записано для типов с временой зоной - в зоне базы, для без - время по гринвичу. для нас, восточнее гринвича это всегда отнимание часов, так что может выйти не допустимое значение.

====
а вообще, я щитаю, что хранить данные лучше без привязки к временой зонне.

- при миграции хранилища данных не возникнет проблем, если в новом месте другой
часовой пояс, неоднозначности с летним зимним временем
(оно видиш ли иногда меняеться по велению царя батюшки)

- проще писать код клиентов этих данных, если везде по коду извесно - в базе ютс.
(просто иногда их достаешь как бинарные данные, ещо какие экзотические финты)

ЗЫ
кслову говоря. файловая система хранит метки времени изменения файлов в ютс времени(гринвич) - поэтому удобно, переставил винчестер в другой комп, он всёравно покажет верную дату изменения файла, даже не зная где винчестер стоял до этого.

ЗЫЗЫ
как тебе поступить с нулевым временем - надо знать конкретику задачи, что это время означает? что означает нулевое значение.

ЗЫЗЫЗЫ
ваще подозреваю что ты пропустил мимо лучший способ организации базы.

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

ДЫК - бери тип время(без даты) и ставь на это поле ON UPDATE CURRENT_TIMESTAMP
и оно само будет обновлять поле при изменении записи в таблице. а ночью везде выставляешь время нулевое.
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673276
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453,

спасибо за офигенный ответ)!

1)разрешить значение НУЛЛ и ставить его вместо нулей.

а как это сделать?


по умолчанию для каждого юзера в поле users_update стоит DATETIME и соответственно 0000-00-00 00:00:00
я могу изменить это поле, но как сделать, чтобы по умолчанию там выставлено было NULL ?

Принцип такой. Юзеры сайта знакомств поднимают анкеты. По умолчанию там 0000-00-00 00:00:00, но когда происходит "подъем анкеты", посылается запрос вида
Код: html
1.
$query("UPDATE users SET users_update = NOW());

что приводит к тому, что поле получает дату-время. Потом, юзер "висит" сутки, затем другой запрос,
Код: html
1.
2.
3.
$sql = "UPDATE users SET users_update1 = NULL
WHERE DATE_ADD(users_update1, INTERVAL 24 HOUR) < NOW()";
$query($sql);

и он "улетает".

Но я хотел сделать еще дополнительно условие, чтобы если юзер "висит", то в его профиле появлялась дата когда он "поднялся". У тех же, кто не "поднялся" - пусто.


как вариант можно было бы задать подобием как ты делал автормне важно в моей логике было, чтобы это самое время было или больше равно, или меньше последнего_контрольного...я поставил по умолчанию 1971-01-01 00:00:00

но конструкция вида {if $users[user_loop].users_update > 1971-01-01 00:00:00'} {$users[user_loop].users_update} {else}   {/if}
дает пустой лист ..

Если бы можно было поле users_update задать как NULL по умолчанию, и чтобы туда переодически писалось дата-время, это было бы просто, тогда бы можно было поставить простое условие - если не равен нулл то ...
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673282
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторно конструкция вида {if $users[user_loop].users_update > 1971-01-01 00:00:00'} {$users[user_loop].users_update} {else} {/if}
дает пустой лист

ошибку она даёт, а не пустой лист
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673391
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anvanoНу а что мешает, просто в IF сравнить и всё ?

Код: html
1.
{if $users[user_loop].users_update != 0000-00-00 00:00:00'} {$users[user_loop].users_update} {else} &nbsp; {/if}

Что-то не то с кавычками вокруг "нулевой" даты.
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673422
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

если дописать кавычку
Код: html
1.
{if $users[user_loop].users_update != '0000-00-00 00:00:00'} {$users[user_loop].users_update} {else} &nbsp; {/if}



все равно не срабатывает, хоть и белого листа нет. По логике должно выдавать значения только тех, кто не равен нулю, но
выводит всем дату 30.11.-0001 - в 00 час. 00 мин. т.е. у тех, у кого в таблице стоит 0000-00-00 00:00:00
а тем, у кого не ноль тоже но выводит корректно.
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673427
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо логике
эпично. ты хоть попроуй подумать ЧТО ЭТО в смарти.
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673448
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

хех.

{if $users[user_loop].users_update1 < '1971-00-00 00:00:00'} {$users[user_loop].users_update1} {else}   {/if}

сработало!

всем СПАСИБО!!
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38673995
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя_87,

:) круто.

а нащот значения по умолчанию нулл

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

<name> <type> <can_be_null? : NULL | NOT NULL> default <value>

...
`date_up` DATETIME NULL DEFAULT NULL,
...
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38677958
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453,

хех.

как только изменил на NULL и поле и содержимое,

{if $users[user_loop].users_update1 < '1971-00-00 00:00:00'} {$users[user_loop].users_update1} {else} {/if}

перестало все работать..

{if $users[user_loop].users_update1 < NULL} {$users[user_loop].users_update1} {else} {/if}

тоже не работает..
...
Рейтинг: 0 / 0
[Smarty] Как сделать вывод значения по условию?
    #38677962
Женя_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453,

сработало только так

> '2014-00-00 00:00:00'
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Smarty] Как сделать вывод значения по условию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]