Ir para conteúdo

POWERED BY:

Arquivado

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

girotto000

variável definida como 'null' ocupando espaço?

Recommended Posts

Isso porque a condição que monta o $var leva em consideração dois testes: Se o campo do servidor está preenchido E se o campo dos links está preenchido.

 

Se pra você tanto faz, ao invés de && (e) use || (ou).

Então, se eu uso o && fica perfeito, tirando o fato de que os dois campos tem que ser preenchidos para aparecer algum valor.

Porém, se eu uso ||, o problema do espaço retorna...

 

Eu não vejo problema algum usar o &&, desde que quando o cara pro exemplo, preencher a variavel links2 e deixar a servers2 em branco (ou vice-versa) aparece uma mensagem dizendo que ele deve preencher o outro campo também. Porém, para essas mensagens de validação eu uso o required no html.

Então se deixar &&, tem que fazer uma validação do tipo, se links2 está preenchido e servers2 não (e também vice-versa) aparece a mensagem entende? Porque se não o cara vai simplesmente mandar com um dos dois vazios e vai acabar não enviando nada..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse tipo de verificação é simples, basta que ao invés de usar && você "quebre" a condição em dois IFs aninhados porém, inverta o operador, já que você quer saber se está vazio ao invés de não estar vazio:

$var = NULL;
 
if( ! empty( $_POST['servers1'] ) ) {
 
    if( empty( $_POST['link1'] ) ) {

        // Erro!

    } else {

        if( ! is_null( $var ) ) {
 
            $var .= "\n";
        }
 
        $var .= $_POST['servers1'] . "\n" . $_POST['link1']
    }
}

Isso vai testar o servidor, se passar, testa os links, se também passar, monta a variável. Se não passar pelos links, aborta e mostra o erro.

Outra possibilidade, mais simples, seria simplesmente adicionar um else no final do IF mais externo e colocar a mensagem de que ambos servidor e links devem ser preenchidos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse sistema ficou quase perfeito.

Ele está testando o servidor, pois se eu marco o servidor e não escrevo nada ele exibe a mensagem.

Porém, se eu não marco servidor e escrevo a mensagem, ele passa sem avisar o erro.

 

Outra dúvida, como havia dito eu uso o require no html, sistema BEM simples de alerta que o campo deve ser preenchido

Print:

 

 

6F58q.png

 

 

 

Em vez de dar um echo nesse sistema que você postou acima, será que teria como fazer ele exibir essa mensagem acima? É possível isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isso eu disse que era mais fácil colocar um else no IF mais externo. Desse jeito que eu demonstrei, você teria manter as duas condições, unidas pelo || (ou) e dentro colocar um elseif pra testar pelo servers e pelo link.

 

É muito menos pior você escrever um "e/ou" do que fazer quinhentas condições.

 

Sobre o required do HTML (HTML 5, imagino) não sei te dizer porque nunca mexi com HTML 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isso eu disse que era mais fácil colocar um else no IF mais externo. Desse jeito que eu demonstrei, você teria manter as duas condições, unidas pelo || (ou) e dentro colocar um elseif pra testar pelo servers e pelo link.

 

É muito menos pior você escrever um "e/ou" do que fazer quinhentas condições.

 

Sobre o required do HTML (HTML 5, imagino) não sei te dizer porque nunca mexi com HTML 5

Ta então o código ficaria basicamente:

 

Se os dois etão vazios = null para os dois

Se somente links está preenchido, apresenta uma mensagem

Se somente servers está preenchido, apresenta uma mensagem

Se os dois estão preenchidos, passam com seus valores

 

O sistema eu saquei, só não sei como montar isso!

 

Sobre o required sim é HTML5... Estou pesquisando aqui como usá-lo com php ainda....

Por isso eu disse que era mais fácil colocar um else no IF mais externo. Desse jeito que eu demonstrei, você teria manter as duas condições, unidas pelo || (ou) e dentro colocar um elseif pra testar pelo servers e pelo link.

 

É muito menos pior você escrever um "e/ou" do que fazer quinhentas condições.

 

Sobre o required do HTML (HTML 5, imagino) não sei te dizer porque nunca mexi com HTML 5

Então Bruno, ainda estou tentando o código...

Porém, a lógica não está cooperando comigo...

Observe o seguinte código:

 

if( ! empty( $servers2 ) || ! empty( $links2 ) ) {         echo "Erro";     } else {         if( ! is_null( $var ) ) {             $var .= "\n";        }         $var .= $_POST['servers2'] . "\n" . $_POST['links2'];}

O código acima ele deveria executar perfeitamente o que eu estou querendo!

 

 

Se os dois etão vazios = null para os dois

Se somente links está preenchido, apresenta uma mensagem

Se somente servers está preenchido, apresenta uma mensagem

Se os dois estão preenchidos, passam com seus valores

 

Mas ele continua com o mesmo problema! Se eu marco o radio, e não escrevo nada ele retorna o erro, mas se eu escrevo e não marco ele não retorna o erro, ele retorna nulo, não sei porque!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo required é apenas para o browser mostrar um erro visual e assim poupar tempo com validações no front-end. Ainda sim é apenas client-side e violável. HTML 5 não muda o conceito de client-side/server-side.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo required é apenas para o browser mostrar um erro visual e assim poupar tempo com validações no front-end. Ainda sim é apenas client-side e violável. HTML 5 não muda o conceito de client-side/server-side.

Não há problema, meu público não é de grande conhecimento, e além do mais eles n ganhariam nada violando o sistema. Você sabe reproduzir essa mensagem que o required reproduz no html5 pelo PHP?

 

E o problema do php, tem alguma ideia? estou quebrando a cabeca aqui rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá, essa mensagem é o navegador quem faz. Qual é o ponto de usá-lo com PHP?

 

Para mim esse problema com o PHP parece conversa de bêbado, mas seguindo o que você disse no post #26:

function conversaDeBebado($links, $server) {
  if (empty($links) && empty($server)) {
    return;
  }

  if (! empty($links) && empty($server)) {
    return 'Message';
  }

  if (empty($links) && ! empty($server)) {
    return 'Message';
  }

  return array($links, $server);
}

É uma péssima prática retornar valores de tipos diferentes, mas eu acho que é por aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá, essa mensagem é o navegador quem faz. Qual é o ponto de usá-lo com PHP?

 

Para mim esse problema com o PHP parece conversa de bêbado, mas seguindo o que você disse no post #26:

function conversaDeBebado($links, $server) {
  if (empty($links) && empty($server)) {
    return;
  }

  if (! empty($links) && empty($server)) {
    return 'Message';
  }

  if (empty($links) && ! empty($server)) {
    return 'Message';
  }

  return array($links, $server);
}

É uma péssima prática retornar valores de tipos diferentes, mas eu acho que é por aí.

Cara, tem que ler o tópico inteiro. Do jeito que você ta fazendo tira toda a ideia que o Bruno montou e o objetivo do tópico...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que o Enrico sugeriu está correto. Uma vez que você tenha a lógica, você empacota ela numa função e usa N vezes sem repetir tudo toda hora

Compartilhar este post


Link para o post
Compartilhar em outros sites

#32..

ficou dando corda.. ganhou um filho

 

?

 

 

O que o Enrico sugeriu está correto. Uma vez que você tenha a lógica, você empacota ela numa função e usa N vezes sem repetir tudo toda hora

 

Mas Bruno para que mudar todo o sistema que tu montou? Se a única coisa que precisa é descobrir porque esse código não está apresentando essa função:

 

Se somente links está preenchido, apresenta uma mensagem:

 

 

$var = NULL;
 
if( ! empty( $_POST['servers1'] ) ) {
 
    if( empty( $_POST['link1'] ) ) {
 
        // Erro!
 
    } else {
 
        if( ! is_null( $var ) ) {
 
            $var .= "\n";
        }
 
        $var .= $_POST['servers1'] . "\n" . $_POST['link1']
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comentário do hinom se referia ao fato de que eu estendi demais esse assunto. Você está com um problema de lógica básica que poderia ter sido resolvido vários posts atrás, basta ler o que isset() e empty() fazem e montar os testes lógicos com os operadores certos.

 

O Enrico te deu tudo de mão beijada:

function conversaDeBebado($links, $server) {

  // Se os dois campos estiverem vazios

  if (empty($links) && empty($server)) {
    return;
  }

  // Se não tiver link, mas tiver servidor

  if (! empty($links) && empty($server)) {
    return 'Message';
  }

  // Se tiver servidor, mas não tiver link

  if (empty($links) && ! empty($server)) {
    return 'Message';
  }

  return array($links, $server);
}
Agora basta usar, no modelo de retornar um array (vish... faltou café aí :P) que o Enrico escreveu:
if( is_array( conversaDeBebado( $_POST['links1'], $_POST['servers1'] ) ) {
 
    // OK, concatena a variável
}
No lugar daquele [inline]return array()[/inline] você poderia ter um [inline]return TRUE[/inline] e o [inline]return;[/inline] pra [inline]return FALSE[/inline] e mudar esse IFpra simplesmente:
if( conversaDeBebado( $_POST['links1'], $_POST['servers1'] ) === TRUE )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quem será que teve a "brilhante" idéia de definir que um <TEXTAREA> teria uma contraparte </TEXTAREA> e que a atribuição de valores à eles seria feita dentro desses pares ao invés de pelo atributo value como todos os outros elementos de formulário?

Bruno sempre que uso essa m**da penso nisso, seria tão mais fácil definir os valores dentro de um atributo e poder usar delimitadores (") pra isso.. :closedeyes:




<input type="textarea" value="muito melhor">
Já bastaria.

 

 

 

 

 

Hereges! Queria ver digitar RFC e Licenças nesse formato.

 

echo implode("\n", array_filter(array(
    '[tag]',
    $servers1,
    $links,
    $servers2,
    $links2,
    $servers3,
    $links3,
    $servers4,
    $links4,
    '[/tag]'
)));

Compartilhar este post


Link para o post
Compartilhar em outros sites

:lol: vou esclarecer, é óbvio que não é o melhor para um texto estático quilométrico, só pensei como uma sintaxe alternativa para o caso do texto ser dinâmico e não precisar abrir e fechar tag, foi só isso..

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.