Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!!
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...
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***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'
);
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 :(";
}obrigado, irei testar aqui com as dicas..
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***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***
Segue links que podem ser de seu
interesse.
LINKs
VALIDAÇÃO COM JS
VALIDAÇÃO COM HTML5
VALIDAÇÃO COM PHP