Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

caio1380

[Resolvido] !empty

Recommended Posts

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

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

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, 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,

 

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.