1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP verificar campos

Discussão em 'Web Development' iniciada por khador, 20 de Julho de 2012. (Respostas: 11; Visualizações: 2687)

  1. khador

    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.
     
  2. Jammin @

    Jammin @ Power Member

    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 ;)
     
  3. anjo2

    anjo2 Power Member

    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.
     
  4. khador

    khador Power Member

    alguem me pode por um exemplo de uma verificacao desse tipo em php ?
     
  5. ftav

    ftav Power Member

    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...';
    }

    ?>
     
  6. khador

    khador Power Member

    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?
     
  7. khador

    khador Power Member

    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");
    }
     
  8. ftav

    ftav Power Member

    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.
     
  9. ftav

    ftav Power Member

    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: 20 de Julho de 2012
  10. anjo2

    anjo2 Power Member

    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?
     
  11. khador

    khador Power Member

    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";
    }
    ?>
     
  12. ftav

    ftav Power Member

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

Partilhar esta Página