checkbox (RESOLVIDO)

Pessoal nao sei porque mas hoje atualizei minha versao do sc nao sei se é bug da versao ou algo sei la oq o fato é o seguinte.

Eu tenho varias aplicações onde utilizo campo char onde o valor é 0 ou 1 e coloco um check informando
Deseja cadastrar o e-mail … bla, bla (1) ou seja

Se o o cliente marcar o check vai marcar o valor 1 no campo.
Porem até entao eu fazia o seguinte para validar o campo num before update por exemplo
if (!{campo})
{
{campo} = “0”;
}

e estava funcionando, porém hoje depois da atualização não roda mais ja tentei

if ({campo} == “”)
{
{campo} == “0”;
}

if (empty({campo}))
{
{campo} == “0”;
}

$vr1 = trim({campo});
if (empty($vr1))
{
{campo} == “0”;
}

alguem sabe oque ?

resolvido ou melhor comida de bola
if(!{campo})
{
{campo} = ‘0’;
}

mas fica a minha pergunta porque com aspas duplas não indicou o valor ou seja

assim nao funciona
if(!{campo})
{
{campo} = “0”;
}

e assim funciona
if(!{campo})
{
{campo} = ‘0’;
}

Weber,

Creio que seja por causa do parser do SC que usa aspas duplas. Assim, quando ele encontra a primeira das aspas duplas do teu código ele fecha e não processa o dado que colocaste. O jeito é sempre usar aspas simples mesmo.

Acho que você teria que fazer “.0.” é mais ou menos isso porque aquilo vai ser passado como string já.

Acredito que nem se ja interpretação do sc mas do proprio php.

A alocação de memória que ele faz é meio estranha. ele trata todos dados como “dado” e não como string/int/double/float/char/etc.

Tanto que se vc checar:

//$var não declarada

$var==0 // retorna true

$var==false //retorna true

!isset($var) //retorna true

Do mesmo modo, com a mesma variavel não declarada vc fizer:

$var = '2';

$var += 3; // 5 (definido int)

$var .= ‘str’; // definido string novamente

$var == false // retorna false

Ele realiza a conversão do tipo de dado automaticamente dependendo do operador

Tem tambem a questão da string literal e não literal (1 ou 2 aspas) que são interpretadas de formas diferentes.

Ou seja, tudo é a questão de como a linguagem aloca os dados em memoria.

É as vezes tem detalhes que a gente acaba passando batido por pura falta de atenção ou as vezes cansaço mesmo de ficar olhando para a tela.

Estou com Weber nessa. xD

robert no teu caso é a opção 1 de passar batido ou a opcao 2 de ficar horas na frente da tela, rsss