caio1380 0 Denunciar post Postado Maio 31, 2010 Boa dia, Estou com um problema. O seguinte codigo não tem funcionado conforme o esperado. if (!empty($_POST['datarecebimento']) == ""){ $cor = '"#87CEFF"'; } else{ $cor = '"#FF1493"'; } O campo sempre fica preenchido com a primeira opção (não esta vazio - cor azul) independente de estar preenchido ou não. Se utilizo o "isset", acontece o contrario, o campo sempre aparece como vazio. Alguma ideia? Agradeço desde já. At. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 31, 2010 Leia a documentação da função empty(). Você irá ver que o retorno da função é um booleano (true/false) e não uma string vazia, como está fazendo na condição do teu código. Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Maio 31, 2010 Certo. Qual a função adequada para o que eu preciso fazer? Eu achava que era o isset. Mais como não funcionou tentei com o empty. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 31, 2010 A maneira que está fazendo é errada. Entre na documentação novamente e veja os exemplos de uso, tem tudo lá ;). Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Maio 31, 2010 Cara, Não entendi aonde está errado. Tem como me dar uma dica? Compartilhar este post Link para o post Compartilhar em outros sites
Wesley Developer 0 Denunciar post Postado Maio 31, 2010 if (!empty($_POST['datarecebimento'])) { $cor = '"#87CEFF"'; } else { $cor = '"#FF1493"'; } leia a documentação !!! Compartilhar este post Link para o post Compartilhar em outros sites
lucasmartins 6 Denunciar post Postado Maio 31, 2010 if (!empty($_POST['datarecebimento']) == ""){$cor = '"#87CEFF"';}else{$cor = '"#FF1493"';} Basta que você faça somente: if (!empty($_POST['datarecebimento'])) { ... Veja, você verificar se empty($var) é a igual verificar se $var == "" || $var == null || $var == false || count($var) == 0 Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Maio 31, 2010 Ainda não funciona. Mesmo que o campo 'datarecebimento' esteja preenchido ele vai p/ o else. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Junho 1, 2010 Como você fez? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Junho 1, 2010 Coloque o fragmento abaixo no seu código e poste aqui, exatamente, a saída: echo '<pre>'; var_dump( $_POST[ 'datarecebimento' ] ); var_dump( $_POST ); echo '</pre>'; Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Junho 1, 2010 Parse error: syntax error, unexpected T_WHILE, expecting ',' or ';' in ..... Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Junho 1, 2010 @caio1380, não flood o fórum. 05ª - Post UP! Favor não postar mensagens com o objetivo de evidenciar o tópico, tornando-o primeiro da lista de tópicos (up), tal como mensagens repetitivas e/ou que não condizem com o assunto do tópico em questão (flood). Seu post anterior foi excluído por desrespeitar as regras do fórum. Você já fez o que sugeri no post #10 ? Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Junho 1, 2010 Desculpe, Sim, A mensagem que apareceu foi: Parse error: syntax error, unexpected T_WHILE, expecting ',' or ';' in ... Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Junho 1, 2010 @caio1380, Verifique novamente se você colocou exatamente como eu postei, você deve ter esquecido algum ponto e vírgula em algum lugar. Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Junho 1, 2010 Realmente tinha copiado errado. apareceu : NULL array(0) { } Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Junho 1, 2010 Tente fazer a verificação assim: $vazio = !isset( $_POST[ 'datarecebimento' ] ) ? true : empty( $_POST[ 'datarecebimento' ] ); if ( $vazio ){ echo 'Estou vazio'; } else { echo 'Estou preenchido...'; } EDIT: Se esse campo aceitar valor ZERO http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0 então a verificação deverá ser: $dtrec =& $_POST[ 'datarecebimento' ]; $vazio = !isset( $dtrec ) ? true : empty( $dtrec ) && ( $dtrec !== '0' ); if ( $vazio ){ echo 'Estou vazio'; } else { echo 'Estou preenchido...'; } Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Junho 1, 2010 Nos dois casos ele retorna "Estou vazio" Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Junho 1, 2010 apareceu : NULL array(0) { } Nos dois casos ele retorna "Estou vazio" Claro, retorna "Estou vazio", porque está de fato vazio !!! Se quiser confirmar, faça mais esse teste: <?php $dtrec =& $_POST[ 'datarecebimento' ]; $vazio = !isset( $dtrec ) ? true : empty( $dtrec ) && ( $dtrec !== '0' ); if ( $vazio ){ echo 'Estou vazio...'; printf( 'Conteúdo de $_POST: <pre>%s</pre><br />' , print_r( $_POST , true ) ); printf( 'Conteúdo de $_GET: <pre>%s</pre><br />' , print_r( $_GET , true ) ); } else { echo 'Estou preenchido...'; } Poste toda a saída aqui. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 1, 2010 Verifique se o formulário está realmente enviando um campo com o nome datarecebimento Muitas falhas de atualização de código acontecem quando você edita o código e simplesmente dá f5 na página. Dependendo do navegador, será efetuada uma nova requisição da página como se você tivesse digitado o endereço, sem enviar dado nenhum. Retorne ao formulário, preencha algum valor no campo datarecebimento e teste novamente. Quanto a sua dúvida inicial, o problema era que você estava comparando verdadeiro/falso com "", o que cria os seguintes casos: Primeiramente, tenha em mente que "" será convertido para FALSE Se o campo estiver vazio, empty() retorna TRUE, ! inverte (FALSE) e então, comparamos se FALSE é igual a FALSE -> Saída: TRUE para campos vazios. Se o campo não estiver vazio, empty() retorna FALSE, ! inverte (TRUE) a comparação final é TRUE é igual a FALSE -> Saída: FALSE para campos não-vazios. Seguindo este racioncínio, entendemos que basta remover o inversor !, para os testes saírem a contento, mas também concluímos que checar se empty() == "" é redundante, o que nos leva a concluir que a única checagem necessária é a função empty(). Para facilitar o entendimento, mantenha o código citado pelo João até o script funcionar a contento $dtrec =& $_POST[ 'datarecebimento' ]; $vazio = !isset( $dtrec ) ? true : empty( $dtrec ) && ( $dtrec !== '0' ); if ( $vazio ){ echo 'Estou vazio'; } else { echo 'Estou preenchido...'; } Edit João, depois de postar vi sua atualização #18 e tenho uma sugestão: Trocar as checagens $_GET/$_POST por $_REQUEST e fazer uma vez só Compartilhar este post Link para o post Compartilhar em outros sites
caio1380 0 Denunciar post Postado Junho 1, 2010 Estou vazio...Conteúdo de $_POST: Array ( [datarecebimento] => ) Conteúdo de $_GET: Array ( ) Compartilhar este post Link para o post Compartilhar em outros sites