Jump to content


Campos Obrigatórios...


  • Faça o login para participar
15 replies to this topic

#1 Serenissimo

Serenissimo
  • Visitantes

Posted 03/08/2008, 14:15

:D Salve salve!!!

Bom, sou iniciante em php... Preciso muito aprender e estou me esforçando muito...
Sabem como é neh... No começo surgem as duvidas mais "absurdas"...

Eu estou ainda em fase de treinamento... Me dedicando a sintaxe... aprendendo as "tags"...
To fazendo exercícios, lendo muito... Pesquisando muito...

O fato é que eu quero fazer campos obrigatórios, mas em php...
Ja fiz em JavaScript e funcionou blz, mas quero fazer em php tambem...
Ate por uma questão de aprendizado neh...

O script é esse:
<?
	if( !isset($_POST['nome']) or empty($_POST['nome'])) {  ?>
<b><i><font color="#FF0000">Não deixe o campo nome em branco!</font></i></b>

 <?	} elseif( !isset($_POST['lado1']) or empty($_POST['lado1'])) { ?>
<b><i><font color="#FF0000">O campo 1° Lado nao pode ficar em branco</font></i></b>

 <?	} elseif( !isset($_POST['lado2']) or empty($_POST['lado2'])) { ?>
<b><i><font color="#FF0000">O campo 2° Lado nao pode ficar em branco</font></i></b>

 <?	} elseif( !isset($_POST['lado3']) or empty($_POST['lado3'])) { ?>
<b><i><font color="#FF0000">O campo 3° Lado nao pode ficar em branco</font></i></b>

<? }else{  } ?>

<?
?>

1° - Esse é o melhor jeito mesmo de mesclar HTML com PHP? Se não, então qual é?
2° - O !isset carrega antes do HTML e não da tempo da pessoa inserir nada no campo...
Voce entra na página e ja aparece o aviso... Desagradável neh... :(
3° - A página não ta "bloqueando" para que, se o campo não estiver preenchido, impessa de ir para a página de resultados...

Se alguem puder me ajudar não saberia como agradeçer!!


Abraço a todos e desde já muuuuuuuuito obrigado!!!
:D

#2 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 03/08/2008, 17:25

Procura fazer em Javascript E Php essa validação (y)

Outra dica: cuida dos agrupamentos (uso dos parenteses para isolar cada grupo - facilita no entendimento do código e evita confusão, erros). Exemplo:

<?php 
if ( (!isset($_POST['seu_campo1'])) || (!isset($_POST['seu_campo2'])) ) {
echo "Campos 1 e 2 são obrigatórios...";
}
?>

Reparou o parentese a mais no !isset ?

Uma vez que PHP é server-side, é interessante não colocar o resultado não dinâmico dentro de um echo, print, etc... Visto que ao se utilizar desta forma, o processamento se dá no lado do servidor, e sem necessidade.

Sendo assim, a tua forma de mesclar IFs + HTML é a mais válida para estes casos.
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#3 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 03/08/2008, 17:55

Sobre as dicas do Firehalk, uma coisa eu discordo '-'

Fazer agrupamentos? Não seria melhor, colocar cada campo separado, e fazer verificação para ele?
Apenas como exemplo básico.

if(empty($_POST['nome'])){
 echo 'Campo "Nome" obrigatório';
}

if(empty($_POST['telefone'])){
 echo 'Campo "Telefone" obrigatório';
}
Obeserve que não tem ELSE IF, por que desse modo, ele mostrará o erro para todos NÃO PREENCHIDOS
E no seu exemplo (Serenissimo), tem o ELSEIF, que assim, se um dos campos estando errados, ele mostrará o erro só para ele... '-'

E sobre o seu desagradavel erro, pdoeria usar como citei no exemplo, e ao invés do ECHO, adicionar o valor em uma variável:
E se a variavel estiver setada ele mostra os erros e o FORM, ou caso contrário mostra mensagem de SUCESSO.


if(empty($_POST['nome'])){
 $erro .= 'Campo "Nome" obrigatório <br>';
}

if(empty($_POST['telefone'])){
 $erro .= 'Campo "Telefone" obrigatório <br>';
}

if(isset($erro)){
 echo $erro;
}else{
 echo 'Mensagem enviada com sucesso!';
}

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#4 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 03/08/2008, 18:33

lwirkk, agrupamento não é isso :P

Por exemplo: if ( (grupo 1) ) {}

Sacou? Quando me referi à parenteses, foi isso aí que eu quis dizer. Ao invés de deixar assim:

if (isset()) {}

Deixa assim:

if ( (isset()) ) {}

Me referia àquele parenteses a mais (y)
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#5 Serenissimo

Serenissimo
  • Visitantes

Posted 03/08/2008, 22:37

:D

Galera, valeu de verdade mesmo as dicas!!!

Mas acho que deixei de especificar algumas coisas...
Vou explicar exatamente o que estou fazendo:

Como começei a aprender php agora, estou ainda fazendo exercícios de lógica e aproveitando para já ir "pegando as manha" do php... rsrs
Esse é ainda meu terceiro exercício, estou fazendo aquele classico dos triangulos, mas quero ja faze-lo bem elaborado... Então pq não faze-lo com campos obrigatorios? Quando a pessoa preenche o formulario com o nome e os dados do triangulo (os numeros dos lados) os dados vao para outra pagina, a pagina de resposta... Dai a primeira dúvida... Como bloquear a página para que, se houver campos não preenchidos, ela continue na mesma ate o preenchimento?
A segunda dúvida é que o PHP verifica os campos não preenchidos antes que o cliente possa preenche-los, ou seja, voce entra na página e ja aparece que voce nao preencheu todos os campos... xxxxxx isso neh!? A questao é: Tem como fazer o php "esperar" o preenchimento dos campos? Imagino que sim neh... É muito obvio isso, mas COMO?

Mas ja ta otimo o que voces fizeram por mim... Muito obrigado!! Valeu mesmo!!!
:lol:

#6 Matheus Cáceres

Matheus Cáceres

    Normal

  • Usuários
  • 65 posts
  • Sexo:Não informado

Posted 03/08/2008, 22:48

cara está muito confuso o que você quer tente ser mais especifico

#7 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 03/08/2008, 23:12

kra para fazer isso que você quer, tem que ser usando o Ajax.

Se vc quer que já apareça que ele deve preencher os campos, vc tem que colocar uma função onload na tag <body> que faz uma requisição em Ajax para o servidor, ou seja, a página resultado onde vai verificar se os dados passados não estão vazios. Mais acho desnecessário isso, coloca direto umas <divs> lá exibindo que os campos devem ser preenchidos, depois vc cria uma função em Ajax que faz a verificação dos campos, e retorna quais campos estão vazios, e aí se tiver algum preenchido vc seta o css style.display da div onde o campo está preenchido como none, ou seja vai ocultar a mensagem "você deve preencher esse campo.

#8 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 03/08/2008, 23:48

Nem precisa ser AJAX, pode ser PHP mesmo, mas mostrando o form denovo com os campos preenchidos, ou usando Javascript, melhor usar os dois juntos...

E Firehalk, hm tá entendi, mas pelo seu exemplo:
<?php 
if ( (!isset($_POST['seu_campo1'])) || (!isset($_POST['seu_campo2'])) ) {
echo "Campos 1 e 2 são obrigatórios...";
}
?>
Aí fiquei pensando... "nossa mas assim deve ser muito ruim de fazer se for essa a idéia" huauhauha, então corrigindo, eu falei no post anterior foi do seu exemplo xD
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#9 Serenissimo

Serenissimo
  • Visitantes

Posted 04/08/2008, 00:23

É exatamente isso, mostrar o form de novo caso nao for preenchido!!
Nao sei nada em relação a AJAX... =/

Vou pesquisar... Tambem acho melhor aparecer uma mensagem so para cada campo sabe...
Mas nao sei é so uma ideia entendem???

O fato é que o php ignora mesmo se esta preenchido ou nao... ele somente avisa (antes da hora), mas nao deixa de enviar o formulario... To usando duas páginas, uma para colocar as informações e outra para receber...

Acho que tirar mesmo essas dúvidas "bobas" que tenho so pesquisando mesmo...

Mas é isso ai galera, ja estou totalmente adepto ao forum... Muito bom e voces tao me ajudando muito mesmo... nao fazem ideia!!!

Obrigadao mesmo!!!!!! :D

Ps-> Podem continuar respondendo e comentando que quanto mais informação melhor!!
=D

Abraço!!

#10 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 04/08/2008, 01:16

Quer uma "mão na roda"? :lol:
Posta sua página que tem o form e a página que recebe os dados postados, que podemos fazer algo básico para você que funciona e que depois só você modificar a gosto. :lol:

Tipo, por que basicamente seria:
  • Fazer o FORM...
  • Enviar os dados para uma página diferente...
  • Nessa página que recebe os dados, verifica se possui dados POSTADOS...
  • Dando tudo OK, dá um IF para cada item do FORM para verificar se ele está vazio...
  • Se está VAZIO determinado campo, ele guarda a mensagem desse campo em uma variável; como citado no post anterior...
  • E depois verifica se essa variável está setada, se SIM por que algum campo não está preenchido...
  • Aí ele mostra a variável (que no caso está com as mensagens de erro)...
  • E embaixo mostra a cópia do FORM anterior, porém com os VALUE's dos campos com valor das variáveis POSTADOS, o campo que foi postado vazio anteriormente, estará vazio agora também, claro, hehehe....
  • Se não der ERRO, ele mostra a mensagem de SUCESSO...
  • ISSO!!! =)

Edição feita por: lwirkk, 04/08/2008, 01:20.

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#11 Serenissimo

Serenissimo
  • Visitantes

Posted 04/08/2008, 02:01

Cara!!! So esses 10 passos me ajudaram muito...
OO'

o Form é o seguinte:
<form action="calc.tri.php" method="POST">
<table align="center" width="25%" border="2">
 <tr>
	 <td colspan="2" align="center">Meu triângulo</td>
 </tr>
 <tr>
	 <td align="center"><b>Nome</b></td>
	 <td align="center" width="70%"><input type="text" size="20" name="nome"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#FF0000">1° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado1"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#0000FF">2° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado2"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#008000">3° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado3"></td>
 </tr>
 <tr>
	 <td align="center" colspan="2">
	 <input type="submit" value="Calcular">
	 </td>
 </tr>
 </table>
 </form>

Bem simples o form mesmo...
A página de resposta, pode ficar de qualquer jeito...
Tipo... o que eu preciso é entender uma forma de fazer isso...
=)

Dos 10 passos to com dificuldade, ou nao sei, fazer os seguintes

5 Se está VAZIO determinado campo, ele guarda a mensagem desse campo em uma variável; como citado no post anterior...
6 E depois verifica se essa variável está setada, se SIM por que algum campo não está preenchido...
7 Aí ele mostra a variável (que no caso está com as mensagens de erro)...
8 E embaixo mostra a cópia do FORM anterior, porém com os VALUE's dos campos com valor das variáveis POSTADOS, o campo que foi postado vazio anteriormente, estará vazio agora também, claro, hehehe....


Cara, muita consideração de verdade mesmo pelo fórum e por voces ai...
Eu tenho um "amigo" que nunca faria nada nem parecido!! E ele tambem nao tem obrigação neh...

To me sentindo em casa!! E se to perguntando tambem podem ter certeza
que nao é por que to com preguiça de pesquisar ou de ler... to realmente
me batendo bastante!! =/

Abraço a todos e uma otima semana!!!

Ps-> Ah, me desculpem se eu entendi algo errado...

:lol:

#12 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 04/08/2008, 03:53

Bom, com base em seu FORM vou tentar explicar melhoras as partes que você tem dúvida. =)
Por partes...

1. Fazer o FORM...
2. Enviar os dados para uma página diferente...:
<form action="calc.tri.php" method="POST">
<table align="center" width="25%" border="2">
 <tr>
	 <td colspan="2" align="center">Meu triângulo</td>
 </tr>
 <tr>
	 <td align="center"><b>Nome</b></td>
	 <td align="center" width="70%"><input type="text" size="20" name="nome"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#FF0000">1° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado1"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#0000FF">2° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado2"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#008000">3° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado3"></td>
 </tr>
 <tr>
	 <td align="center" colspan="2">
	 <input type="submit" value="Calcular">
	 </td>
 </tr>
 </table>
 </form>

3. Nessa página que recebe os dados, verifica se possui dados POSTADOS...:
if(isset($_POST['submit'])){
 // AQUI IREMOS COLOCAR TODO O RESTO DE CÓDIGO, SE NÃO ENTRAR AQUI QUER DIZER QUE A PESSOA ACESSOU ESSA PÁGINA DIRETAMENTE...
}

4. Dando tudo OK, dá um IF para cada item do FORM para verificar se ele está vazio...
5. Se está VAZIO determinado campo, ele guarda a mensagem desse campo em uma variável; como citado no post anterior...:
if(isset($_POST['submit'])){

  if(empty($_POST['nome'])){
	$erro.='Campo "Nome" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado1'])){
	$erro.='Campo "1º Lado" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado2'])){
	$erro.='Campo "2º Lado" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado3'])){
	$erro.='Campo "3º Lado" não deve estar vazio.<br>';
  }


}
Observe que colocamos o valor da variável com um . antes do valor de igualdade, isto para que se a variável tem um valor anterior, ele não seja substituido e sim adicionado.
Se o campo Nome estiver vazio, ele irá colocar a string da mensagem de NOME a variavel $erro, mas se 1º Lado também, não estiver, ele adicionará a string do 1º Lado a variavel $nome e ficando as duas mensagens na mesma variável.

6. E depois verifica se essa variável está setada, se SIM por que algum campo não está preenchido...
7. Aí ele mostra a variável (que no caso está com as mensagens de erro)...
8. E embaixo mostra a cópia do FORM anterior, porém com os VALUE's dos campos com valor das variáveis POSTADOS, o campo que foi postado vazio anteriormente, estará vazio agora também, claro, hehehe....:
if(isset($_POST['submit'])){

  if(empty($_POST['nome'])){
	$erro.='Campo "Nome" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado1'])){
	$erro.='Campo "1º Lado" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado2'])){
	$erro.='Campo "2º Lado" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado3'])){
	$erro.='Campo "3º Lado" não deve estar vazio.<br>';
  }

  if(isset($erro)){
	echo $erro;
	?>
<form action="calc.tri.php" method="POST">
<table align="center" width="25%" border="2">
 <tr>
	 <td colspan="2" align="center">Meu triângulo</td>
 </tr>
 <tr>
	 <td align="center"><b>Nome</b></td>
	 <td align="center" width="70%"><input type="text" size="20" name="nome" value="<?=$_POST['nome'];?>"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#FF0000">1° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado1" value="<?=$_POST['lado1'];?>"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#0000FF">2° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado2" value="<?=$_POST['lado2'];?>"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#008000">3° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado3" value="<?=$_POST['lado3'];?>"></td>
 </tr>
 <tr>
	 <td align="center" colspan="2">
	 <input type="submit" value="Calcular">
	 </td>
 </tr>
 </table>
 </form>
	<?
  }
}
?>

9. Se não der ERRO, ele mostra a mensagem de SUCESSO...:
if(isset($_POST['submit'])){

  if(empty($_POST['nome'])){
	$erro.='Campo "Nome" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado1'])){
	$erro.='Campo "1º Lado" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado2'])){
	$erro.='Campo "2º Lado" não deve estar vazio.<br>';
  }
  if(empty($_POST['lado3'])){
	$erro.='Campo "3º Lado" não deve estar vazio.<br>';
  }

  if(isset($erro)){
	echo $erro;
	?>
<form action="calc.tri.php" method="POST">
<table align="center" width="25%" border="2">
 <tr>
	 <td colspan="2" align="center">Meu triângulo</td>
 </tr>
 <tr>
	 <td align="center"><b>Nome</b></td>
	 <td align="center" width="70%"><input type="text" size="20" name="nome" value="<?=$_POST['nome'];?>"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#FF0000">1° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado1" value="<?=$_POST['lado1'];?>"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#0000FF">2° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado2" value="<?=$_POST['lado2'];?>"></td>
 </tr>
 <tr>
	 <td align="center"><font color="#008000">3° Lado</font></td>
	 <td align="center"><input type="text" size="20" name="lado3" value="<?=$_POST['lado3'];?>"></td>
 </tr>
 <tr>
	 <td align="center" colspan="2">
	 <input type="submit" value="Calcular">
	 </td>
 </tr>
 </table>
 </form>
	<?
  }else{
	echo 'Todos os campos estão preenchidos corretamente... =)';
  }
}
?>

10. ISSO!!!:
=)

Urr preguiça para verificar se acertei na digitação dos códigos, então não me culpe se estiver algo errado, sono owna. huahuahuahua.

Edição feita por: lwirkk, 04/08/2008, 03:52.

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#13 Serenissimo

Serenissimo
  • Visitantes

Posted 04/08/2008, 14:16

lwirkk Muito Obrigado!!!!

Pode deixar, voces ja fizeram demais por mim!!!
:D

Ta perfeito cara, muito obrigado mesmo!!

Abraço a todos e mais uma vez muito obrigado!!!
Uma otima semana pra todo mundo!!
:rolleyes:

Galera funcionou blz...

=D

Agora é so 'formatar' mexer mesmo com o 'layout' e exercício pronto!!!
Depois de pronto vou colocar um link pra ele caso alguém quira ver...

=D

Valeu, abraço!!
:lol:

#14 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 04/08/2008, 14:16

lwirkk Muito Obrigado!!!!

Pode deixar, voces ja fizeram demais por mim!!!
:D

Ta perfeito cara, muito obrigado mesmo!!

Abraço a todos e mais uma vez muito obrigado!!!
Uma otima semana pra todo mundo!!
:rolleyes:

Sem problemas! =)
Qualquer coisa estamos aí! (y)

Até! =)
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#15 Serenissimo

Serenissimo
  • Visitantes

Posted 04/08/2008, 14:23

Sem problemas! =)
Qualquer coisa estamos aí! (y)

Até! =)


Cara, eu fico tipo muito agradecido mesmo pq eu to começando...
Nao to fazendo facul, nem curso, nem nada... To aprendendo pela net mesmo...
Até por isso que ta sendo tao dificil neh... Nao tem praticamente ninguem pra me
dizer: Olha isso aqui ta errado... Tenho um amigo que sabe, mas ele jamais me
ensinaria sabe... Pilantragem dele na minha opniao... Nao ia custar nada, mas a
verdade é que ele nao tem obrigação mesmo neh... Ninguem tem. E voces me
ajudaram muito e com muito boa vontade!! =) Estou me esforçando e vou procurar
sempre postar coisas mais 'inteligentes' e interessantes tambem...
Desculpa o incomodo ai e valeu mesmo!! Abraço!!
:lol:




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq