Not NULL и пустое значение поля

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 14 октября 2016 в 21:55
Не могу понять
поле varchar NOT NULL

Надо выводить только значение равное нулю и прятать пустое значение

условие
{if $char == 0 } $char.value {/if}

В результате все равно выводятся и нулевые и пустые значения, а как заставить игнорировать пустые значения?
#2 14 октября 2016 в 22:44


Не могу понять
поле varchar NOT NULL

Надо выводить только значение равное нулю и прятать пустое значение

условие
{if $char == 0 } $char.value {/if}

В результате все равно выводятся и нулевые и пустые значения, а как заставить игнорировать пустые значения?

Gumoff

Блин — "База не знает равен ли null единице, т.к. null — это не определен."
#3 14 октября 2016 в 22:49
{if $char === 0 || $char === '0'} {$char} {/if}
#4 14 октября 2016 в 22:55


{if $char === 0 || $char === '0' } {$char.value} {/if}

Fuze

Сработало dance
Вот это тонкости — Спасибо FUZE!!!
#5 14 октября 2016 в 23:11
дело в этом $char == '0' — всего две кавычки сыграли свою роль

загадка экранирования нуля кавычками не раскрыта
#6 15 октября 2016 в 00:59

загадка экранирования нуля кавычками не раскрыта

Gumoff
Это не экранирование. Это строка с символом 0, а без кавычек — число 0. Типы данных.

Следующие значения воспринимаются как пустые:

'' (пустая строка — две одинарные кавычки, между ними ничего нет)
0 (целое число)
0.0 (дробное число)
'0' (строка)
NULL
FALSE
array() (пустой массив)
$var; (переменная объявлена, но не имеет значения)

php.net/manual/ru/function.empty.php

Тройное равно ( === ) это строгое сравнение переменных, при котором проверяются и их типы (по типам ссылка выше).

7 == '7' // это правда
7 === '7' // это ложь
7 === 7 // это правда
0 == false // это правда
0 === false // ложь
#7 15 октября 2016 в 10:54


загадка экранирования нуля кавычками не раскрыта

Gumoff
Это не экранирование. Это строка с символом 0, а без кавычек — число 0. Типы данных.

Следующие значения воспринимаются как пустые:

'' (пустая строка — две одинарные кавычки, между ними ничего нет)
0 (целое число)
0.0 (дробное число)
'0' (строка)
NULL
FALSE
array() (пустой массив)
$var; (переменная объявлена, но не имеет значения)

php.net/manual/ru/function.empty.php

Тройное равно ( === ) это строгое сравнение переменных, при котором проверяются и их типы (по типам ссылка выше).

7 == '7' // это правда
7 === '7' // это ложь
7 === 7 // это правда
0 == false // это правда
0 === false // ложь

Fuze

Спасибо :)

В моем случае работает и не строгое сравнение переменных scratch

Как понял идет проверка на пустую строку

$char.value ==='0' вернет false (то есть ложь — значение не пустое)
$char.value =='0' вернет true (то есть правда — значение пустое)
но В моем случае работает и не строгое сравнение переменных $char.value =='0'
popcorn
#8 16 октября 2016 в 20:03
так или иначе решено
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.