Jump to content
peterstefan

validar campos com php

Recommended Posts

Olá, tenho 4 campos em um formulario, porem eles não são obrigatórios, queria ver qual tecnica para fazer que o cliente preencha pelo menos um dos campos. caso ele tente enviar vazio mostrar uma mensagem para ele avisando que tem que preencher pelo menos um dos 4 campos... 

 

Obrigado!!

Share this post


Link to post
Share on other sites

Bom dia, ShadowDLL! Obrigado por responder.. Deixa eu te falar, nesses links que você me passou a possibilidade tipo, tenho 4 campos, mais 3 deles não tenho a informação mais em um eu tenho, ai eu preencho somente o campo que eu tenho a informação, mais caso eu não preencha nenhum deles e tendo cadastrar, o sistema me avisar que tenho que preencher pelo menos um dos 4 campos...

não quero deixar os campos obrigatório e sim ao menos 1 dos 4 caso nenhum dos campos tenha sido informado...

Share this post


Link to post
Share on other sites

peterstefan

Primeiro você precisa definir o TIME de sua validação.

 

Em JavaScript você consegui validar em TEMPO DE EXECUÇÃO, ou sejá, a pessoa preenche e você já valida.

Ou se a sua validação será feita após o envio do formulário com o uso do PHP.

 

Exemplo JavaScript:

ARQUIVO index.php

<script type="text/javascript">
function checkPreenchimento(){    
    if(document.getElementById("IdDoSeuTextboxCampo1").value.length > 0) {
        document.getElementById("IdDoSeuTextboxCampo1").required = true;
        document.getElementById("IdDoSeuTextboxCampo2").required = false;
        document.getElementById("IdDoSeuTextboxCampo3").required = false;
        document.getElementById("IdDoSeuTextboxCampo4").required = false;
    } else if (document.getElementById("IdDoSeuTextboxCampo2").value.length > 0) {
        document.getElementById("IdDoSeuTextboxCampo1").required = false;
        document.getElementById("IdDoSeuTextboxCampo2").required = true;
        document.getElementById("IdDoSeuTextboxCampo3").required = false;
        document.getElementById("IdDoSeuTextboxCampo4").required = false;
    } else if (document.getElementById("IdDoSeuTextboxCampo3").value.length > 0) {
        document.getElementById("IdDoSeuTextboxCampo1").required = false;
        document.getElementById("IdDoSeuTextboxCampo2").required = false;
        document.getElementById("IdDoSeuTextboxCampo3").required = true;
        document.getElementById("IdDoSeuTextboxCampo4").required = false;
    } else if (document.getElementById("IdDoSeuTextboxCampo4").value.length > 0) {
        document.getElementById("IdDoSeuTextboxCampo1").required = false;
        document.getElementById("IdDoSeuTextboxCampo2").required = false;
        document.getElementById("IdDoSeuTextboxCampo3").required = false;
        document.getElementById("IdDoSeuTextboxCampo4").required = true;
    } else {
        document.getElementById("IdDoSeuTextboxCampo1").required = true;
        document.getElementById("IdDoSeuTextboxCampo2").required = true;
        document.getElementById("IdDoSeuTextboxCampo3").required = true;
        document.getElementById("IdDoSeuTextboxCampo4").required = true;
    }
}
</script>

 

* E você chama a função ao apertar qualquer tecla no INPUT de todos os seus INPUT <br>

<form name="formSend" method="post" action="incluir.php" >
<input type="text" name="IdDoSeuTextboxCampo1" id="IdDoSeuTextboxCampo1" onKeyUp="checkPreenchimento()" autofocus required />
<input type="text" name="IdDoSeuTextboxCampo2" id="IdDoSeuTextboxCampo2" onKeyUp="checkPreenchimento()" required />
<input type="text" name="IdDoSeuTextboxCampo3" id="IdDoSeuTextboxCampo3" onKeyUp="checkPreenchimento()" required />
<input type="text" name="IdDoSeuTextboxCampo4" id="IdDoSeuTextboxCampo4" onKeyUp="checkPreenchimento()" required />
<input type="image" src="qualquer.png" align="center" /></td>
</form>

...

Copiar até o </form> para o exemplo em JavaScript e colocar dentro de index.php

 

Exemplo em PHP:

ARQUIVO index.php

<?php session_start();
if (!empty($_SESSION['msg_alerta'])) {
    echo "<font color='#FF3300'>Alerta: </font>".$_SESSION['msg_alerta'];
    $_SESSION['msg_alerta'] = "";
} ?>
<form name="formSend" method="post" action="incluir.php" >
<input type="text" name="IdDoSeuTextboxCampo1" id="IdDoSeuTextboxCampo1" autofocus  />
<input type="text" name="IdDoSeuTextboxCampo2" id="IdDoSeuTextboxCampo2" />
<input type="text" name="IdDoSeuTextboxCampo3" id="IdDoSeuTextboxCampo3" />
<input type="text" name="IdDoSeuTextboxCampo4" id="IdDoSeuTextboxCampo4" />
<input type="image" src="images/add_item_banco_16.png" align="center" /></td>
</form>

 

ARQUIVO incluir.php

<?php
if (empty($_POST['IdDoSeuTextboxCampo1']) and empty($_POST['IdDoSeuTextboxCampo2']) and empty($_POST['IdDoSeuTextboxCampo3']) and empty($_POST['IdDoSeuTextboxCampo4'])) {
    session_start();
    $_SESSION['msg_alerta'] = "Você deve preencher ao menos um campo!";
    header("Location: index.php");
    exit();
};

echo "Um dos valores foi preenchido, então você pode continuar o seu processo para incluir na BASE DE DADOS <br>";
?>

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites

Segue exemplo:

 

CÓDIGO

<?php

$_POST = array (
	# NÂO SERÂO VERIFICADOS
	'name' => 'Olavo Souza',
	'phone' => '+99 (99) 9 9999-9999',
	# SERÂO VERIFICADOS
	'email_1' => '',
	'email_2' => 'email@email.com',
	'email_3' => '',
	'email_4' => 'email@email.com'
);

# CAMPOS INFORMADOS
$informed_fields = array ();

# QUAIS INDICES SERÃO REVISADO?
$verify = array (
	'email_1', 'email_2', 'email_3', 'email_4'
);

# VERIFICAÇÂO
foreach ( $_POST as $indice => $value ) {
	# PESQUISA SE O INDICE DO POST
	# IRÀ SER VERIFICADO
	if ( in_array ( $indice , $verify ) ) {
		# ANALISA SE O CAMPO NÃO ESTÁ
		# VÁZIO
		if ( ! empty ( $value ) ) {
			# ADICIONA NO ARRAY
			$informed_fields [] = $indice;
		}
	}
}

if ( count ( $informed_fields ) > 0 ) {
	var_dump ( $informed_fields );
} else {
	echo "Error :(";
}

 

Share this post


Link to post
Share on other sites

peterstefan

Segue um exemplo caso você queira fazer com JavaScript apenas:

A inicio TODOS os 4 campos são obrigatórios, assim que você digita QUALQUER VALOR em um dos 4 campos os outros deixam de ser obrigatórios.

<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta name='keywords' content='' />
<meta name='description' content='' />
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
<link rel='stylesheet' type='text/css' href='css/style.css' />
<title>Check Campos</title>
<script type='text/javascript'>
function checkPreenchimento() {
    document.getElementById('IdDoSeuTextboxCampo1').required = true;
    document.getElementById('IdDoSeuTextboxCampo2').required = true;
    document.getElementById('IdDoSeuTextboxCampo3').required = true;
    document.getElementById('IdDoSeuTextboxCampo4').required = true;
    if(document.getElementById('IdDoSeuTextboxCampo1').value.length > 0) {
        document.getElementById('IdDoSeuTextboxCampo1').required = true;
        document.getElementById('IdDoSeuTextboxCampo2').required = false;
        document.getElementById('IdDoSeuTextboxCampo3').required = false;
        document.getElementById('IdDoSeuTextboxCampo4').required = false;
    } else if (document.getElementById('IdDoSeuTextboxCampo2').value.length> 0) {
        document.getElementById('IdDoSeuTextboxCampo1').required = false;
        document.getElementById('IdDoSeuTextboxCampo2').required = true;
        document.getElementById('IdDoSeuTextboxCampo3').required = false;
        document.getElementById('IdDoSeuTextboxCampo4').required = false;
    } else if (document.getElementById('IdDoSeuTextboxCampo3').value.length> 0) {
        document.getElementById('IdDoSeuTextboxCampo1').required = false;
        document.getElementById('IdDoSeuTextboxCampo2').required = false;
        document.getElementById('IdDoSeuTextboxCampo3').required = true;
        document.getElementById('IdDoSeuTextboxCampo4').required = false;
    } else if (document.getElementById('IdDoSeuTextboxCampo4').value.length> 0) {
        document.getElementById('IdDoSeuTextboxCampo1').required = false;
        document.getElementById('IdDoSeuTextboxCampo2').required = false;
        document.getElementById('IdDoSeuTextboxCampo3').required = false;
        document.getElementById('IdDoSeuTextboxCampo4').required = true;
    }
}
</script>
* Você chama a função ao apertar qualquer tecla no INPUT de todos os seus INPUT
<form name='formSend' method='post' action='incluir.php' >
    <input type="text" id="IdDoSeuTextboxCampo1" onKeyUp="checkPreenchimento()" required  autofocus/>
    <input type="text" id="IdDoSeuTextboxCampo2" onKeyUp="checkPreenchimento()" required />
    <input type="text" id="IdDoSeuTextboxCampo3" onKeyUp="checkPreenchimento()" required />
    <input type="text" id="IdDoSeuTextboxCampo4" onKeyUp="checkPreenchimento()" required />
    <input type="Submit" value="Validar" /></td>
</form>
</body>
</html>

Espero ter ajudado de alguma forma.

 

Att
Felipe Guedes Coutinho

Share this post


Link to post
Share on other sites

peterstefan

Segue um exemplo caso você queira fazer com PHP apenas:

na página onde você tem os campos você vai ter apenas uma validação de uma variável PHP para exibir o erro.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Check Campos</title>
<?php session_start();
if (!empty($_SESSION['msg_alerta'])) {
    echo "Alerta:".$_SESSION['msg_alerta'];
    $_SESSION['msg_alerta'] = "";
} ?>

<form name='formSend' method='post' action='incluir.php' >
    <input type="text" name="IdDoSeuTextboxCampo1" autofocus/>
    <input type="text" name="IdDoSeuTextboxCampo2" />
    <input type="text" name="IdDoSeuTextboxCampo3" />
    <input type="text" name="IdDoSeuTextboxCampo4" />
    <input type="submit" value="Validar">
</form>
</body>
</html>

Nesse exemplo, o ACTION do FORM chama uma página INCLUIR.PHP, nela vamos fazer a validação como mostra o código abaixo.

<?php
if (empty($_POST['IdDoSeuTextboxCampo1']) and empty($_POST['IdDoSeuTextboxCampo2']) and empty($_POST['IdDoSeuTextboxCampo3']) and empty($_POST['IdDoSeuTextboxCampo4'])) {
    session_start();
    $_SESSION['msg_alerta'] = "Você deve preencher ao menos um campo!";
    header("Location: checkCampos.php");
    exit();
};

echo "Um dos valores foi preenchido";
?>

Repare que no ECHO "UM DOS VALORES  FOI PREENCHIDO" você deve colocar o seu insert e outras validações se for necessário.

 

Espero ter ajudado de alguma forma.

 

Att
Felipe Guedes Coutinho

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Wyrv
      Boa tarde pessoal, 

      Sou meio novo em programação web.
      Estou com o seguinte problema, qualquer ajuda será bem vinda.

      Em PHP, etou montando uma URL pra ser acessada com o comando Curl. 
      Tudo está funcionando, consigo executar e receber o retorno da URL no meu script.

      Porém o retorno parece vir em html, e a resposta que eu quero estar está no meio de tudo.
       
      <form name="IntegracaoForm" method="post" action="/integracao.do;jsessionid=C221B55C9AF93E1A94403FAA52943FB0" enctype="multipart/form-data" id="IntegracaoForm"> <table > <tbody> <tr> <td> 000 </td> </tr> </tbody> </table> </form><br>FIM<br>-> <br /> O código de retorno vem onde está o 000.
      No caso eu preciso validar esse retorno, mas eu não estou conseguindo uma forma de jogar esse valor pra uma variável pra realizar um if.

      Alguém pode me dar alguma ideia?

      Agradeço desde já.
       
    • By joao b silva
      amigos é o seguinte, eu crio um grid dinamicamente com bootstrap, porem a depender do conteúdo as colunas, na mesma linha ficam com tamanhos (height) diferentes, o que não acontece quando utilizamos <table></table>. Como posso resolver isso?
    • By Pellegrini2106
      Fala galera estou com uma duvida tenho um código em php  onde a classe e o método são passados por uma query string onde ele e passado desta forma:
      "http://localhost/projeto/?url=pessoa&metodo=cadastrarPessoa&id=1".
      Mas na verdade quero passar na forma de URL amigável pegando ao invés o arquivo pegasse  a classe e o método deste jeito "http://localhost/projeto/pessoa/cadastrarPessoa ou se tiver uma consulta pegando a classe, método e o resultado da consulta via URL  desta forma: "http://localhost/projeto/pessoa/1.
       
      Obrigado
       
      Olha o Código Fonte:
       
      .htaccess
      RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] index.php
       
      <?php /* Chama a Biblioteca Gerenciadora de Template TWIG */ require_once 'vendor/autoload.php'; /* Classe Core */ require_once 'app/core/Core.php'; /* Classe Controle */ require_once 'app/controle/menuControle.php'; require_once 'app/controle/pessoaControle.php'; require_once 'app/controle/erroControle.php'; $template = file_get_contents("app/visao/template/estrutura.php"); ob_start(); $core = new Core(); $core->Start($_GET); $saida = ob_get_contents(); ob_end_clean(); $tplPronto = str_replace('{{Area Dinamica}}', $saida, $template); echo $tplPronto; Core.php -> E a camada onde eu quero transformar a query string em URL amigavél que por sua vez chama a classe controle.
      <?php class Core { public function Start($urlGet) { $acao = 'index'; if (isset($urlGet['url'])) { $controle = $urlGet['url'] . 'Controle'; } else { $controle = 'menuControle'; } if (!class_exists($controle)) { $controle = "erroControle"; } if (isset($urlGet['metodo'])) { $acao = $urlGet['metodo']; } else { $acao = 'index'; } call_user_func(array(new $controle, $acao), array()); } }  
       
    • By Caio Vargas
      Fala pessoal estou com uma grande duvida ...
      fiz algumas pesquisa sobre o filtro de produtos ... ate consegui fazer alguma coisa porem eu estou em duvida ... pq pelas referencias que eu vi  tem uns que ja vem selecionado a categoria
      alguem tem algum exemplo de filtro 
    • By landerbadi
      Olá pessoal
       
      Tenho uma tabela mysql chamada “poesias” com os seguintes campos (id,autor,poesia) e uma outra tabela chamada “palavras” com os seguintes campos (id,palavra,ocorrencias).
       
      Na tabela poesias eu cadastrei uma serie de poesias, e na tabela palavras eu cadastrei uma lista de palavras.
       
      Eu preciso fazer com que o php pegue as palavras cadastradas na tabela palavra e grave no campo ocorrências as quantidades de vezes que determinada palavra aparece na tabela poesias.
       
      Alguém sabe como fazer isso?
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.