t0ze Posted September 16, 2013 at 02:36 PM Report #524743 Posted September 16, 2013 at 02:36 PM (edited) Boa tarde pessoal, Estou aqui meio às aranhas, com uma situação um tanto ou quanto peculiar. Tenho na minha tabela no MYSQL o campo 'Existe' é do tipo char(1) e o meu objectivo para este campo é guardar valores com 0 e 1 sendo que 0 corresponde a Não, e 1 a sim (anteriormente tinha este campo como tinyint). De referir ainda que este campo tem como default value NULL. Pois bem, no formulário de edição deste registo, tenho as duas radio box <input type="radio" name="existe" value="1" <?php echo ($process->process['existe'] == '1') ? 'checked' : '' ;?> >Sim <input type="radio" name="existe" value="0" <?php echo ($process->process['existe'] == '0') ? 'checked' : '' ;?> >Não E eu não consigo de maneira nenhuma (inclusive mudei o tipo do campo na base de dados) fazer com que, caso o campo na base de dados seja NULL, nenhuma das opções fica activa. Se o campo é texto, porque é que ele está a interpretar o '0' como NULL ? Já inclusive testei a comparação com === (que segundo li, verifica o tipo do campo e o valor, se n estiver enganado) Alguém me pode dar uma ajuda ? Obrigado, Cumps Edited September 16, 2013 at 02:37 PM by t0ze
capricorn Posted September 16, 2013 at 02:49 PM Report #524744 Posted September 16, 2013 at 02:49 PM tens de usar o operador === em vez de ==, só assim o 0 é diferente de null imprime a variavel $process->process['existe'] para ter a certeza que não é 0
yoda Posted September 16, 2013 at 02:49 PM Report #524745 Posted September 16, 2013 at 02:49 PM Se pode ser sim ou não o valor, porquê o NULL? Não faz sentido .. before you post, what have you tried? - http://filipematias.info sense, purpose, direction
t0ze Posted September 16, 2013 at 03:00 PM Author Report #524746 Posted September 16, 2013 at 03:00 PM @yoda o NULL é para no caso de na base de dados aquele campo não estar preenchido (default value é NULL) as checkbox sim e não não estão seleccionadas. Aceito sugestões que possam fazer sentido 🙂 Obg. @capricorn "martelei" o valor na base de dados, '0', NULL, fiz var_dump à variavel. e o resultado do var_dump para o caso de $process->process['existe'] = 0 e $process->process['existe'] = NULL é exactamente o mesmo: string(0) "". Também fiz a comparação com === e continua a dizer que 0 é igual a NULL
HappyHippyHippo Posted September 16, 2013 at 04:22 PM Report #524758 Posted September 16, 2013 at 04:22 PM Também fiz a comparação com === e continua a dizer que 0 é igual a NULL estás a dizer que no teu PHP, se fizeres o segunite código tens a mensagem apresentada ? if (0 === NULL) { echo "os valores sao iguais"; } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
monteiroxxi Posted September 16, 2013 at 04:43 PM Report #524763 Posted September 16, 2013 at 04:43 PM (edited) Em PHP, com a utilização do operador '==' é normal que a comparação entre 0, NULL , "" (string vazia) ou false o resultado da mesma seja verdadeira pois o "PHP" considera que todos os valores acima apresentados são semelhantes. Edited September 16, 2013 at 04:51 PM by monteiroxxi
HappyHippyHippo Posted September 16, 2013 at 04:46 PM Report #524764 Posted September 16, 2013 at 04:46 PM Em PHP, com a utilização do operador '===' (idêntico) é normal que a comparação entre 0, NULL , "" (string vazia) ou false o resultado da mesma seja verdadeira pois o "PHP" considera que todos os valores acima apresentados são semelhantes. http://www.php.net/manual/en/language.operators.comparison.php $a === $b Identical TRUE if $a is equal to $b, and they are of the same type. for favor corrige-te e não confundas o criador do tópico 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
monteiroxxi Posted September 16, 2013 at 04:57 PM Report #524769 Posted September 16, 2013 at 04:57 PM for favor corrige-te e não confundas o criador do tópico Perdão 😞 1 Report
t0ze Posted September 17, 2013 at 10:20 AM Author Report #524860 Posted September 17, 2013 at 10:20 AM estás a dizer que no teu PHP, se fizeres o segunite código tens a mensagem apresentada ? if (0 === NULL) { echo "os valores sao iguais"; } E não são iguais ? tendo em conta isto: Em PHP, com a utilização do operador '===' (idêntico) é normal que a comparação entre 0, NULL , "" (string vazia) ou false o resultado da mesma seja verdadeira pois o "PHP" considera que todos os valores acima apresentados são semelhantes. Segui a sugestão do @yoda. Leva só Sim e Não e é esse o valor que guardo na base de dados, sim e não. Assim não tenho que comparar zeros com NULL. Cumprimentos.
pikax Posted September 17, 2013 at 10:34 AM Report #524866 Posted September 17, 2013 at 10:34 AM E não são iguais ? Nao, o 0 e' um inteiro e o NULL e' null, os tipos sao diferentes! Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
t0ze Posted September 17, 2013 at 10:38 AM Author Report #524870 Posted September 17, 2013 at 10:38 AM Nao, o 0 e' um inteiro e o NULL e' null, os tipos sao diferentes! Foi exactamente por achar isso, é que usei no campo "Existe" na base de dados os valores 0 e 1 tendo em conta que NULL é isso mesmo NULL != 0 portanto quando no if dos radio buttons Sim para se o valor no campo "Existe" === 0, Não para se o valor no campo "Existe" === 0 e nenhum selecionado se o valor "Existe" === NULL Porem e como diz ali em cima na citação: Em PHP, com a utilização do operador '===' (idêntico) é normal que a comparação entre 0, NULL , "" (string vazia) ou false o resultado da mesma seja verdadeira pois o "PHP" considera que todos os valores acima apresentados são semelhantes. Que é exactamente o que acontece. 0 === NULL verdadeiro. Ou estou a baralhar-me todo ? 😞
Rui Carlos Posted September 17, 2013 at 11:06 AM Report #524879 Posted September 17, 2013 at 11:06 AM E não são iguais ? tendo em conta isto: O autor do texto que citas já corrigiu um detalhe que não estava correcto nesse texto. 1 Report Rui Carlos Gonçalves
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now