Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
<?php if(isset($_POST['enviar'])){
$nome = $_POST['nome'];
$telefone = $_POST['telefone'];
$celular = $_POST['celular'];
$sql_inserir = mysql_query("INSERT INTO cliente(nome, telefone, celular)VALUES('$nome','$telefone', '$celular')");
}
?>
Nesse sisteminha, quero que verifique cada campo se esta prenchido, se não estiver, dar uma mensagem de "prencha o campo nome", "Prencha o campo telefone" e "Prencha o campo celular", se passar por todos grava. me mostra como faço so num campo ai, por favor....
Acho que esse código não precisa de explicação, mas se surgir alguma dúvida ou se não funcionar pode falar que agente concerta. Isso é o que geralmente faço nos formulários.
<?php
if($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST["enviar"]))
{
$nome = !empty($_POST["nome"]) ? $_POST["nome"] : null;
$telefone= !empty($_POST["telefone"]) ? $_POST["telefone"] : null;
$celular = !empty($_POST["celular"]) ? $_POST["celular"] : null;
if($nome && $telefone && $celular)
{
$sql_inserir = mysql_query("INSERT INTO cliente(nome, telefone, celular)VALUES('$nome','$telefone', '$celular')");
}
else
{
echo "<b>Erro</b>. Por favor preencha todos os campos corretamente.";
}
}Esse tipo de verificação, de fato é feito com empty(). Só atente que empty() também considerará como TRUE os zeros.
Ou seja:
$var1 = '0';
$var2 = 0;
var_dump( empty( $var1 ), empty( $var2 ) );
Retornará TRUE para ambos os casos o que pode vir a ser um problema dependendo da lógica que estiver precisando.
Pessoalmente, eu não gosto muito da abordagem mostrada pelo Nielson, com vários ELSEIF's, pois o programa precisa testar cada uma das declarações para ver em qual se enquadraria.
Se você tiver 50 campos requeridos e só o último campo não tiver sido preenchido, todos os 49 testes anteriores (1 IF + 48 ELSEIF's) terão sido executados também.
A abordagem do David, utilizando operadores ternários, é a mais utilizada. Porém, recentemente, não lembro exatamente onde, vi um teste de performance entre IF/ELSE e o ternário que me preocupou.
Quando a informação a ser testada é muito grande, principal, mas não exclusivamente, dados de um TEXTAREA, usar o ternário gera uma uma grande perda de performance.
Para informações pequenas, como nome ou telefone, também há essa perda, mas ela é tão ínfima que não importa.
Porém uma coisa que me chamou a atenção no exemplodo David foi:
>
// ...
if($nome && $telefone && $celular)
//...
Não faça isso!
Quando você assume esse tipo de teste você se baseia única e exclusivamente em TRUE e FALSE.
O problema é que muitas coisas no PHP são avaliadas como TRUE, assim como muitas coisas são avaliadas como FALSE.
Nesse exemplo simples, tudo bem. Mas se você se acostuma a confiar no cast burro do PHP, condições mais complexas vão te deixar de cabelo em pé.
Apesar de ser mais extenso, é muito mais seguro e confiável você definir explícitamente o tipo de teste que está fazendo:
if( $nome !== NULL && $telefone !== NULL && $celular && !== NULL ) {}
Ou:
if( is_null( $nome ) && is_null( $telefone ) && is_null( $celular ) ) {}
Muito embora a primeira opção seja melhor pois opera diretamente sobre o tipo, aopasso que a segunda invoca ~uma função três vezes para fazer a mesma coisa.
Jquery validate é uma boa opção ?
jQuery, assim como qualquer componente de validação feito em JavaScript, atua somente no computador cliente.
Isso significa que se você validar somente com JavaScript um campo que de forma alguma possa ser vazio mas não verificar no programa PHP que receberá esses dados, se o usuário desabilitar o suporte a JavaScript no navegador, sua segurança é desfeita podendo, inclusive, mostrar error ao usuário final.
Ao contrário do que se pensa, muitos usuários experientes navegam sem suporte à JavaScript, principal,mas não exclusivamente em ambientes Windows, onde a disseminação de vírus associados muitas vezes é feita via JavaScript.
Por isso SEMPRE valide primeiro com PHP. JavaScript é "frescura", apenas para proporcionar uma interface mais rica para o usuário.
Uma Aplicação deve sempre funcionar sem JavaScript e até sem CSS. :thumbsup:
Realmente como o Bruno disse, esses teste de TRUE e FALSE pode causar muitos problemas dependendo do Codigo, não se pode confiar nisso,
Bom, aconselho usar uma verificação mais complexa, como limite de caracteres por campo tb, no caso de Números verificar se realmente são Números e por ai vai.
Fiz algo rápido pois estou com pressa ehehe se estiver errado me corrijam
Lembrando que do modo que utilizei abaixo, você jamais por Declara a Variável $error fora das verificações de erro ehehe
<?php
if(isset($_POST['enviar'])){
$nome = trim($_POST['nome']);
$telefone = (int)trim($_POST['telefone']);
$celular = (int)trim($_POST['celular']);
if (!(isset($error)) && (strlen($nome) < 3 || strlen($nome) > 30)){
$error = "O Nome deve ter de 3 a 30 caracteres!";
} $error = "Preencha um telefone Válido.";
} $error = "Preencha um celular Válido.";
} $nome = urlencode($nome);
$sql_inserir = mysql_query("INSERT INTO cliente(nome, telefone, celular)VALUES('$nome','$telefone', '$celular')");
}
}
?>
Faça assim:
if (empty($nome)){
echo "preencha campo nome..";
} elseif (empty($telefone)){