PHP verificar campos

khador

Power Member
Boa tarde pessoal, tenho uma pequena dúvida já procurei mas so consegui encontrar noutras linguagens de programação standalone. Portanto gostaria de saber no meu caso tenho um ficheiro registo.php que faz aadiciona um empregado à base de dados até ai muito bem mas o problema e que quando eu nao preencho campos e clico no botão registar ele adiciona um campo em branco na BD, ou seja, eu não quero sobrecarregar a BD com registos nulos, então gostaria de saber como fazer uma verificacao nos campos nome, idade, morada, etc... mas tenho uma duvida que é poder controlar as textbos(criei na pagina html e depois passei para o ficheiro registo.php pelo POST)para nao deixar adicionar se os campos estiverem vazioss obrigado pessoal.
 
Olá,

Podes fazer isso de várias maneiras.

A primeira é com javascript e logo na página HTML uma validação onsubmit.

A segunda é já na página do PHP mas obriga a abrir mais páginas mas é apenas um if do género:

Se campo 1 e campo 2 = "" - nao faz nada
else - executa a query

Abraço ;)
 
As validações são sempre server-side, por isso o php tem sempre de verificar os campos, o javascript pode-o fazer para ajudar o visitante (é mais rápido a mostrar o aviso).

Existe a função empty, mas é preciso saber se pode ser usada nesses campos, o ideal é trim e empty para verificar que não metem só espaços brancos ou algo do género.
 
Será qualquer coisa do tipo:

<?php
// captura valores do nome, mail e contacto
$nome = $_POST['nome'];
$email = $_POST['email'];
$contacto = $_POST['contacto'];

// verifica se os campos foram preenchidos
if (!$nome || !$email || !$contacto) {
echo 'Os campos devem ser preenchidos'; }
else {
echo 'Pode continuar o processamento...';
}

?>
 
muito obrigado era isto que eu procurava e o email e o contacto e nome na caputura estao a ser passados do html para o php $email... etc, certo?
 
eu tenho isto até ao momento ja agora podem explicar o operador ! antes de $nome por exemplo:

if ($total == 0)
{
if (!$nome_empregado || !$data_nascimento || !$localidade || !$contacto || !$email || !$bi || !$nif || !$password) //como é que eu verifico aqui se está vazio o campo?
{
$inserir="INSERT INTO empregados VALUES ('','$nome_empregado', '$data_nascimento','$localidade','$contacto','$email','$bi','$nif','$password')";
mysql_query($inserir);
header("location:registo_sucesso.html");
}
else
}
if else
{
die("Erro a inserir os dados!");
header("location:registo_existe.html");
}
 
Neste caso, cria um formulário em HTML e atribui o nome a cada variável. Suponhamos que é um formulário que vai validar apenas o nome:

Código para formulário HTML:
<form id="formulario1" name="formulario1" method="post" action="verificar_campos.php">
Nome:<input type="text" name="nome" id="nome" />
<input type="submit" name="button" id="button" value="Enviar" />
</form>

Código de validação em PHP:

<?php
// nome deste ficheiro: verificar_campos.php
// captura valor do nome
$nome = $_POST['nome'];

// verifica se o campo nome foi preenchidos
if (!$nome) {
echo 'O campo com o nome deve ser preenchido'; }
else {
echo 'Pode continuar o processamento...';
}

?>

Agora é só adaptar ao que pretende, com outros campos...Se for no caso dos emails, pode completar mais, para a verificação dar conta se tem a @ ou se é colocado o ponto no domínio.
 
O sinal ! basicamente significa "diferente de", ou seja, "!$nome" é interpretado como não sendo um campo vazio. Os dois traços entre as variáveis "obrigam" a que existam em simultâneo.

Se for para fazer a validação dos campos 1 por 1 conforme diversas especificações, já pode ser feito de outro modo.

Também pode fazer verificação da seguinte forma:

if (!empty($_POST) AND (empty($_POST['nome']) OR empty($_POST['mail']))) {
header("Location: login.php"); exit;
}
 
Última edição:
eu tenho isto até ao momento ja agora podem explicar o operador ! antes de $nome por exemplo:

if ($total == 0)
{
if (!$nome_empregado || !$data_nascimento || !$localidade || !$contacto || !$email || !$bi || !$nif || !$password) //como é que eu verifico aqui se está vazio o campo?
{
$inserir="INSERT INTO empregados VALUES ('','$nome_empregado', '$data_nascimento','$localidade','$contacto','$email','$bi','$nif','$password')";
mysql_query($inserir);
header("location:registo_sucesso.html");
}
else
}
if else
{
die("Erro a inserir os dados!");
header("location:registo_existe.html");
}
www.php.net <- tens lá praticamente tudo

O ! é para fazer o contrário, por isso se a variável for false, 0, null ou vazia, ele vai transformar em true, por isso estás a fazer isso ao contrário.
Se colocares: "if(!empty(trim($var)))", ele vai verificar se não é vazio, e segue.

Esse código que tens aí funciona? Não me parece, o sql não deve ser feito assim (adicionas um campo na tabela, dás cabo do site todo), depois de um header se não queres que continue o processamento deves fazer exit, esses elses e if's não fazem sentido nenhum e estão mal feitos, e o die não faz sentido nenhum, die é morrer, queres que o script morra? Para quê um header depois?
 
Actualmente tenho assim:

<?php
$host="localhost";
$username="root";
$password="";
$db_name="bdestetica";

mysql_connect("$host", "$username", "$password") or die("Não foi possivel estabelcer a ligação");

mysql_select_db("$db_name") or die("A base de dados não foi selecionada");

$nome_empregado=$_POST["nome"];
$data_nascimento=$_POST["dataNasc"];
$localidade=$_POST["localidade"];
$contacto=$_POST["contacto"];
$email=$_POST["email"];
$bi=$_POST["bi"];
$nif=$_POST["nif"];
$password=$_POST["password"];

$query=("SELECT count(*) as total FROM empregados where nome='$nome_empregado'");
$resultado=mysql_query($query);
$total=mysql_result($resultado, 0, "total");

if (empty($nome_empregado) || empty($data_nascimento) || empty($localidade) || empty($contacto) || empty($email) || empty($bi) || empty($nif) || empty($password))
{
if (empty($nome_empregado))
{
echo "Falta preencher o campo Nome do empregado";
}
if (empty($data_nascimento))
{
echo "Falta preencher o campo Data Nascimento";
}
if (empty($localidade))
{
echo "Falta preencher o campo Localidade";
}
if (empty($contacto))
{
echo "Falta preencher o campo Contacto";
}
if (empty($email))
{
echo "Falta preencher o campo Email";
}
if (empty($bi))
{
echo "Falta preencher o campo BI";
}
if (empty($nif))
{
echo "Falta preencher o campo nif";
}
if (empty($password))
{
echo "Falta definir uma Password";
}
}
elseif ($total == 0)
{
$inserir="INSERT INTO empregados VALUES ('','$nome_empregado', '$data_nascimento','$localidade','$contacto','$email','$bi','$nif','$password')";
mysql_query($inserir);
header("location:registo_sucesso.html");
}
else
{
echo "Os dados introduzidos já existem";
}
?>
 
Eu faria isso usando um switch/case, definindo cada situação pretendida. Esses "IF" todos deveriam ter um "ELSE", pois caso contrário penso que não irá funcionar, uma vez que se falhar não há instrução de retorno...
 
Back
Topo