Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola galera!
Na tentativa de fazer um formulario que qnd a pessoa nao digitar um campo obrigatorio
ele aparece um alerte e volta com os campo que ja estavam preenchidos, fiz uma condicao
que nao esta funcionando, esta aparecendo esses erros
Notice: Undefined index: cidade in /home/marfmaqc/public_html/site.php on line 283
Notice: Undefined variable: error in /home/marfmaqc/public_html/site.php on line 301
Warning: require(orcamento/enviar.php) [function.require]: failed to open stream: No such file or directory in /home/marfmaqc/public_html/site.php on line 302
Warning: require(orcamento/enviar.php) [function.require]: failed to open stream: No such file or directory in /home/marfmaqc/public_html/site.php on line 302
Fatal error: require() [function.require]: Failed opening required 'orcamento/enviar.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/marfmaqc/public_html/site.php on line 302
O codigo é esse(comeca na linha 275):
if (isset($_POST['orcamento'])){
$nome = $_POST['nome'];
$email = $_POST['email'];
$empresa = $_POST['empresa'];
$cpf = $_POST['cpf'];
$inscricao = $_POST['inscricao'];
$estado = $_POST['estado'];
$cidade = $_POST['cidade'];
$site = $_POST['site'];
$telefone = $_POST['telefone'];
$mensagem = $_POST['mensagem'];
if (!empty($nome)) {
$error[1] = "Preencha seu nome.";
}if (!empty($email)) {
$error[2] = "Preencha seu nome.";
}if (!empty($cpf)) {
$error[3] = "Preencha seu CPF ou CNPJ.";
}if (!empty($estado)) {
$error[4] = "Selecione seu estado.";
}if (!empty($cidade)) {
$error[5] = "Selecione sua cidade.";
}if (!empty($telefone)) {
$error[6] = "Preencha seu telefone.";
}if (!empty($mensagem)) {
$error[7] = "Preencha sua mensagem.";
}if (count($error) == 0){
require_once ("orcamento/enviar.php");
}
if (count($error) != 0) {
foreach ($error as $erro) {
echo '<script language="Javascript" type="text/javascript">
alert("$erro");
history.back();
</script>';
}
}
}
e o formulario é esse:
<form method="post" action="" enctype="multipart/form-data" name="frmorcamento" onsubmit="return submit_page(this);">
<label for="nome">Nome*:</label>
<input type="text" name="nome" value="" /><br />
<label for="email">E-mail*:</label>
<input type="text" name="email" value="" /><br />
<label for="empresa">Empresa:</label>
<input type="text" name="empresa" value="" /><br />
<label for="cpf">CNPJ/CPF*:</label>
<input type="text" name="cpf" value="" /><br />
<label for="inscricao">Insc. Estadual:</label>
<input type="text" name="inscricao" value="" /><br />
<label>Estado*:</label><select id="estado" name="estado"></select> <br />
<label>Cidade*:</label><select id="cidade" name="cidade"></select> <br />
<label for="site">Website:</label>
<input type="text" name="site" value="" /><br />
<label for="telefone">Telefone*:</label>
<input type="text" name="telefone" value="" /><br />
<label for="mensagem">Mensagem*:</label>
<textarea name="mensagem"></textarea><br />
<input type="submit" name="orcamento" id="enviarorcamento" value="Enviar" />
</form>
Alguem poderia me dizer um sistema pros campos ja preechidos nao se apagarem depois
do alert e o formulario enviar?
agradeço desde ja!
>
pra que isso?
if (!empty($nome)) {
$error[1] = "Preencha seu nome.";
}if (!empty($email)) {
$error[2] = "Preencha seu nome.";
}if (!empty($cpf)) {
$error[3] = "Preencha seu CPF ou CNPJ.";
}if (!empty($estado)) {
$error[4] = "Selecione seu estado.";
}if (!empty($cidade)) {
$error[5] = "Selecione sua cidade.";
}if (!empty($telefone)) {
$error[6] = "Preencha seu telefone.";
}if (!empty($mensagem)) {
nao vai printa mesmo os erros você nao deu echo.
e nao precisa colocar !empty basta somente o empty
if(empty($nome)){
echo "Preencha o nome";
}elseif(empty($email)){
echo "preencha o email tbm";
}
e assim vai indo
Bom agora eu fiz assim
$error = 0;
if (empty($nome)) {
$error = "Preencha seu nome.";
}elseif (empty($email)) {
$error = "Preencha seu nome.";
}elseif (empty($cpf)) {
$error = "Preencha seu CPF ou CNPJ.";
}elseif (empty($estado)) {
$error = "Selecione seu estado.";
}elseif (empty($cidade)) {
$error = "Selecione sua cidade.";
}elseif (empty($telefone)) {
$error = "Preencha seu telefone.";
}elseif (empty($mensagem)) {
$error = "Preencha sua mensagem.";
}elseif ($error == 0){
include ("orcamento/enviar.php");
}
if ($error != 0) {
echo '<script language="Javascript" type="text/javascript">
alert("$error");
history.back();
</script>';
}
mas ainda nao aparece o alert e aparece esse erro
Notice: Undefined index: cidade in /home/marfmaqc/public_html/site.php on line 283
Antes de verificar cada variável, veja se ela existe primeiro com a função isset(); Exemplo:
isset($cidade) ? $cidade : false;
ou
if (isset($cidade) and empty($cidade)) {
$error = "Selecione sua cidade.";}
Seu segundo IF deverá ficar assim:
if ($error != 0)
{
print '<script language="Javascript" type="text/javascript">
alert("'.$error.'");
history.back();
</script>';
}>
Antes de verificar cada variável, veja se ela existe primeiro com a função isset(); Exemplo:
isset($cidade) ? $cidade : false;
ou
if (isset($cidade) and empty($cidade)) {
$error = "Selecione sua cidade.";}
Seu segundo IF deverá ficar assim:
if ($error != 0)
{
print '<script language="Javascript" type="text/javascript">
alert("'.$error.'");
history.back();
</script>';
}
ainda nao funcionou!
$error = 0;
if (empty($nome)) {
$error = "Preencha seu nome.";
}elseif (empty($email)) {
$error = "Preencha seu nome.";
}elseif (empty($cpf)) {
$error = "Preencha seu CPF ou CNPJ.";
}elseif (isset($estado)) {
$error = "Selecione seu estado.";
}elseif (isset($cidade)) {
$error = "Selecione sua cidade.";
}elseif (empty($telefone)) {
$error = "Preencha seu telefone.";
}elseif (empty($mensagem)) {
$error = "Preencha sua mensagem.";
}elseif ($error == 0){
include ("orcamento/enviar.php");
}
ainda continua o mesmo erro
Notice: Undefined index: cidade in /home/marfmaqc/public_html/site.php on line 283
E você só tem essa variável chamada cidade ? não tem como dar erro...
>
Bom agora eu fiz assim
$error = 0;
if (empty($nome)) {
$error = "Preencha seu nome.";
}elseif (empty($email)) {
$error = "Preencha seu nome.";
}elseif (empty($cpf)) {
$error = "Preencha seu CPF ou CNPJ.";
}elseif (empty($estado)) {
$error = "Selecione seu estado.";
}elseif (empty($cidade)) {
$error = "Selecione sua cidade.";
}elseif (empty($telefone)) {
$error = "Preencha seu telefone.";
}elseif (empty($mensagem)) {
$error = "Preencha sua mensagem.";
}elseif ($error == 0){
include ("orcamento/enviar.php");
}
if ($error != 0) {
echo '<script language="Javascript" type="text/javascript">
alert("$error");
history.back();
</script>';
}
mas ainda nao aparece o alert e aparece esse erro
Notice: Undefined index: cidade in /home/marfmaqc/public_html/site.php on line 283
veja se você nao defini um alert nao vai mostra alerta nenhum:
if(empty($variavel)){
echo "<script>alert('Informe o campo tal');top.location.href=\"caminho de volta.php\";</script>";
}
se você nao der echo nao vai printa(mostra) nada
>
E você só tem essa variável chamada cidade ? não tem como dar erro...
pior que nao tem! =s
Bom dizemos que agora eu digitei tudo certo no formulario!
ai aparece esses erros e nao envia o email:
Warning: require(orcamento/enviar.php) [function.require]: failed to open stream: No such file or directory in /home/marfmaqc/public_html/site.php on line 326
Warning: require(orcamento/enviar.php) [function.require]: failed to open stream: No such file or directory in /home/marfmaqc/public_html/site.php on line 326
Fatal error: require() [function.require]: Failed opening required 'orcamento/enviar.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/marfmaqc/public_html/site.php on line 326
meu codigo para eviar o email e o autenticado
<?php
session_start();
// Cria variáveis ************
$nome = $_POST['nome'];
$email = $_POST['email'];
$empresa = $_POST['empresa'];
$cpf = $_POST['cpf'];
$inscricao = $_POST['inscricao'];
$estado = $_POST['estado'];
$cidade = $_POST['cidade'];
$site = $_POST['site'];
$telefone = $_POST['telefone'];
$mensagem = $_POST['mensagem'];
//$formnome = $_POST['nome']; // dados vindos do contato.php
//$formemail = $_POST['email'];
//$formassunto = $_POST['assunto']; // dados vindos do contato.php
//$formdesc = $_POST['desc']; // dados vindos do contato.php
require ("alterar_esse_arquivo.php"); // pega os dados personalizados desse arquivo
require("class.phpmailer.php"); // envio de e-mail com autenticacao do provedor
$mail = new PHPMailer(); // envodo de email com autenticacao do provedor
$mail->SetLanguage("br", "language/");
$mail->IsSMTP();
//Cria PHPmailer class
$mail->From = $email; //email do remetente
$mail->FromName = $nome; //Nome de formatado do remetente
$mail->Host = "$smtp_endereco"; //Pegando dados do alterar_esse_arquivo.php
$mail->Mailer = "smtp"; //Usando protocolo SMTP
$mail->AddAddress("$seu_email"); //pegando dados do alterar_esse_arquivo.php
$mail->Subject = "Orcamento Marfmaq via site";
//Assunto do email
$mail->Body = "Empresa: $empresa</br> CPF/CNPJ: $cpf</br> Insc. Estadual: $inscricao</br>Estado: $estado </br>Cidade: $cidade</br> Nome: $nome </br>Email : $email </br>Website: $site</br> Telefone: $telefone</br></br> Mensagem: $mensagem"; //Body of the message assunto que veio do from.htm
//SMTP
$mail->SMTPAuth = true;
$mail->Username = "$usuario_smtp";
$mail->Password = "$senha_smtp";
//Verifica se email sera enviado
if(!$mail->Send())
{ //Checa erros no envo do email
echo "<script>alert('Ocorreram erros ao enviar email');location.href='../site.php?id=orcamento';</script>"; //Imprime mensagem de que email nào foi enviado
exit;
}echo "<script>alert('Orçamento enviado com sucesso!');location.href='../site.php?id=orcamento';</script>";
exit;
}
?>
acredito que o erro é no require
require ("orcamento/enviar.php");
qual eu devo utiliza para haver trocas de dados
require, require_once include entre outros?
Pude verificar que seu html não está legal.
Onde você colocou:
<label>Estado*:</label><select id="estado" name="estado"></select> <br />
<label>Cidade*:</label><select id="cidade" name="cidade"></select> <br />
O jeito mais correto seria:
<label>Estado*:</label>
<select id="estado" name="estado">
<option value="nome do estado">nome do estado</option>
</select> <br />
<label>Cidade*:</label>
<select id="cidade" name="cidade">
<option value="nome da cidade">Nome da cidade</option>
</select> <br />Neste caso meu amigo, seu script está cheio de problemas... é bom você da uma estudada sobre tratamento de erros :seta: http://forum.imasters.com.br/topic/229485-tratamento-de-erros/ :thumbsup:
>
Pude verificar que seu html não está legal.
Onde você colocou:
<label>Estado*:</label><select id="estado" name="estado"></select> <br />
<label>Cidade*:</label><select id="cidade" name="cidade"></select> <br />
O jeito mais correto seria:
<label>Estado*:</label>
<select id="estado" name="estado">
<option value="nome do estado">nome do estado</option>
</select> <br />
<label>Cidade*:</label>
<select id="cidade" name="cidade">
<option value="nome da cidade">Nome da cidade</option>
</select> <br />
Bom essa campo é pelo javascript que completa as cidades!
acredito nao ser esse o problema
Se for uma validação simples você pode usar o HTML mesmo!
Com a opção REQUIRED
Ex.:
<input type="text" name="email" value="" placeholder="Insira seu nome" required/>
Galera resolvi o erroooooooooooooooooo!
o problema é que eu tava colocando as condicoes na pagina errado,
no caso na mesma do formulario! eu tinha que colocar no enviar.php
que é o arquivo queautentica o email
mas agradeço a todos vcs pela paciencia!
obgg e pode fechar
pra que isso?
if (!empty($nome)) {
nao vai printa mesmo os erros você nao deu echo.
e nao precisa colocar !empty basta somente o empty
if(empty($nome)){
echo "Preencha o nome";
}elseif(empty($email)){
e assim vai indo