Ir ao conteúdo
  • Cadastre-se

Erro com formulário PHP (Resolvido)


pisicohtico

Posts recomendados

Bom pessoal é o seguinte, estou usando um arquivo PHP para enviar formulários para meu email. Funciona direitinho com caixas de texto, porém quando insiro um input do tipo radio o script para de funcionar.

Abaixo segue o código que estou usando no envia.php

<?
$nome      = $_POST["nome"];
$email     = $_POST["email"];
$precisando = $_POST["precisando"]
$enredeco = $_POST["endereco"]
$fotos = $_POST["fotos"]
$videos = $_POST["videos"]
$audio = $_POST["audio"]
$animacao = $_POST["animacao"]
$outros = $_POST["outros"]
$conteudooutros = $_POST["conteudooutros"]
$dominio = $_POST["dominio"]
$hospedagem = $_POST["hospedagem"]
$detalhes = $_POST["detalhes"]

global $email; //função para validar a variável $email no script todo

$data      = date("d/m/y");                     //função para pegar a data de envio do e-mail
$ip        = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante
$hora      = date("H:i");                       //para pegar a hora com a função date

//aqui envia o e-mail para você
$envia = mail ("[email protected]",                       //email aonde o php vai enviar os dados do form
      "Orcamento",
      "Nome: $nome\nData: $data\nIp: $ip\nNavegador: $navegador\nHora: $hora\nPrecisando: $precisando\nEndereco: $endereco\nFotos: $fotos\nVideos: $videos\nAudio: $audio\nAnimacao: $animacao\nOutros: $outros\nConteudo outros: $conteudooutros\nDominio: $dominio\nHospedagem: $hospedagem\nDetalhes: $detalhes",
      "From: $email"
     );

if ($envia) {
     Header("location:http://wmashter.sites.uol.com.br"); //essa é a página de obrigado.
     }
else {
echo "Problemas no envio, por favor tente novamente";
echo "<a href='http://wmashter.sites.uol.com.br'>Voltar</a>"; /*no lugar de index.htm, coloque
a página para onde você deseja redirecionar caso o formulário apresente
algum problema no preenchimento.
*/
}


?>

Como já disse, o script funciona direitinho com caixas de texto comum, mais não funciona com Radio Buton

como resolver isso?

Obrigado

EDIT: Modifiquei o código porque adicionei todos os campos do formulário

Link para o comentário
Compartilhar em outros sites

Pergunto porque se o script manda dados de outros campos, menos de 'radio', provavelmente o erro está no código do 'radio' não no script de enviar o e-mail.

Bom quando eu insiro os 'radio' e os checkbox' em vez de dar um erro, aparece simplesmente uma página em branco, e não envia o email, abaixo os códigos.

Código do formulário:

    <td width="635" valign="top"><form id="form1" name="form1" method="post" action="envia.php">
      <table width="635" border="0" cellspacing="0" cellpadding="5">
        <tr>
          <td width="265"><h4>Nome:</h4></td>
          <td width="370"><h4>
            <label>
              <input name="nome" type="text" id="nome" size="32" />
              </label>
          </h4></td>
        </tr>
        <tr>
          <td><h4>E-mail:</h4></td>
          <td><h4>
            <label>
              <input name="email" type="text" id="email" size="32" />
              </label>
          </h4></td>
        </tr>
        <tr>
          <td><h4>Do que está precisando? </h4></td>
          <td><h4>
            <label>
              <input name="precisando" type="radio" value="atualizacao"/>
              Atualização de meu site</label>
          </h4>
            <h4>Qual endereço do seu site?

              <label>
                <input name="endereco" type="text" id="endereco" value="http://" size="32" />
                </label>
            </h4>
            <h4>
              <label>
                <input name="precisando" type="radio" " value="construcao" />
                Construção de um novo site</label>
            </h4></td>
        </tr>
        <tr>
          <td><h4>Que tipo de conteúdo você quer no seu site? </h4></td>
          <td><h4><input name="fotos" type="checkbox" id="fotos" value="fotos" />
              Fotos

              <input name="videos" type="checkbox" id="videos" value="videos" />
              Vídeos
  
              <input name="audio" type="checkbox" id="audio" value="audio" />
Áudio
  
              <input name="animacao" type="checkbox" id="animacao" value="animacao" />
              Animação
  
              <input name="outros" type="checkbox" id="outros" value="outros" />
              Outros. Quais?
              <input name="conteudooutros" type="text" id="conteudooutros" size="32" />
              </label>
          </h4></td>
        </tr>
        <tr>
          <td><h4>Pretende usar um domínio? </h4></td>
          <td><h4><label>
              <input name="dominio" type="radio" value="sim" />
              Sim</label>

              <label><input name="dominio" type="radio" value="nao_registrar" />
              Não, pretendo registrar</label>

              <label><input name="dominio" type="radio" value="nao_gratis" />
              Não, mais vou usar um gratuito</label></h4>            </td>
        </tr>
        <tr>
          <td><h4>Já sabe onde vai hospedar o site? </h4></td>
          <td><h4>
            <label>
              <input name="hospedagem" type="radio" value="sim" />
              Sim</label>

              <label><input name="hospedagem" type="radio" value="não" />
              Não</label>
          </h4></td>
        </tr>
        <tr>
          <td><h4>Outros detalhes: </h4></td>
          <td><h4>
            <label>
              <textarea name="detalhes" cols="32" rows="9" id="detalhes"></textarea>
              </label>
          </h4></td>
        </tr>
        <tr>
          <td></td>
          <td><h4>
            <label>
              <input type="submit" name="Submit" value="Enviar" />
              </label>
          </h4></td>
        </tr>
      </table>
        </form>

Código do envia.php:

<?
$nome      = $_POST["nome"];
$email     = $_POST["email"];
$precisando = $_POST["precisando"]
$enredeco = $_POST["endereco"]
$fotos = $_POST["fotos"]
$videos = $_POST["videos"]
$audio = $_POST["audio"]
$animacao = $_POST["animacao"]
$outros = $_POST["outros"]
$conteudooutros = $_POST["conteudooutros"]
$dominio = $_POST["dominio"]
$hospedagem = $_POST["hospedagem"]
$detalhes = $_POST["detalhes"]

global $email; //função para validar a variável $email no script todo

$data      = date("d/m/y");                     //função para pegar a data de envio do e-mail
$ip        = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante
$hora      = date("H:i");                       //para pegar a hora com a função date

//aqui envia o e-mail para você
$envia = mail ("[email protected]",                       //email aonde o php vai enviar os dados do form
      "Orcamento",
      "Nome: $nome\nData: $data\nIp: $ip\nNavegador: $navegador\nHora: $hora\nPrecisando: $precisando\nEndereco: $endereco\nFotos: $fotos\nVideos: $videos\nAudio: $audio\nAnimacao: $animacao\nOutros: $outros\nConteudo outros: $conteudooutros\nDominio: $dominio\nHospedagem: $hospedagem\nDetalhes: $detalhes",
      "From: $email"
     );

if ($envia) {
     Header("location:http://wmashter.sites.uol.com.br"); //essa é a página de obrigado.
     }
else {
echo "Problemas no envio, por favor tente novamente";
echo "<a href='http://wmashter.sites.uol.com.br'>Voltar</a>"; /*no lugar de index.htm, coloque
a página para onde você deseja redirecionar caso o formulário apresente
algum problema no preenchimento.
*/
}


?>

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olha, eu testei por aqui e enviou e-mail normalmente. Pra não falar que eu não alterei nada, fiz pequenas alterações/correções na sintaxe (destacado):

Envia.php:


<?
$nome = $_POST["nome"];
$email = $_POST["email"];
$precisando = $_POST["precisando"]; // daqui pra baixo faltou ponto e vírgula
$enredeco = $_POST["endereco"];
$fotos = $_POST["fotos"];
$videos = $_POST["videos"];
$audio = $_POST["audio"];
$animacao = $_POST["animacao"];
$outros = $_POST["outros"];
$conteudooutros = $_POST["conteudooutros"];
$dominio = $_POST["dominio"];
$hospedagem = $_POST["hospedagem"];
$detalhes = $_POST["detalhes"];

global $email; //função para validar a variável $email no script todo

$data      = date("d/m/y");                     //função para pegar a data de envio do e-mail
$ip        = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante
$hora      = date("H:i");                       //para pegar a hora com a função date

// defino o corpo do e-mail antes
$corpo = "Nome: $nome\nData: $data\nIp: $ip\nNavegador: $navegador\nHora: $hora\nPrecisando: $precisando\nEndereco: $endereco\nFotos: $fotos\nVideos: $videos\nAudio: $audio\nAnimacao: $animacao\nOutros: $outros\nConteudo outros: $conteudooutros\nDominio: $dominio\nHospedagem: $hospedagem\nDetalhes: $detalhes";

//aqui envia o e-mail para você
$envia = mail ("[email protected]", "Orcamento", $corpo, "From: $email");

if ($envia) {
     Header("location:http://wmashter.sites.uol.com.br"); //essa é a página de obrigado.
     }
else {
echo "Problemas no envio, por favor tente novamente";
echo "<a href='http://wmashter.sites.uol.com.br'>Voltar</a>"; /*no lugar de index.htm, coloque
a página para onde você deseja redirecionar caso o formulário apresente
algum problema no preenchimento.
*/
}

?>

e no formulário apenas em duas linhas:


<input name="precisando" type="radio" value="atualizacao" />
<input name="precisando" type="radio" value="construcao" /> >!-- tinha aspas a mais //-->

Qualquer problema tamos aí...

Link para o comentário
Compartilhar em outros sites

Para facilitar, não precisa definir todas aquelas variáveis no inicio, é só usar a função extract (acho que é essa)

Flwsss :-BEER

Ainda sou iniciante no PHP, quem sabe quando escrever o próximo código eu possa usar.

Agora eu to querendo descobrir como formatar a mensagem que chega no e-mail.

Vivendo e aprendendo, valeu

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Acho interessante isso mesmo de otimizar os scripts depois de prontos, e concordo com o Bernardo a respeito do extract() do PHP, realmente ele vai facilitar a sua vida.

A utilização é bem simples: basta trocar todo aquele começo em que você define as variáveis enviadas, uma a uma, por simplesmente:

if($_GET[acao]=='verifica') {

extract($_POST);

}

E no formulário: <form action="envia.php?acao=verifica" ....>

Ou você, inicialmente, pode apenas trocar o início do seu script, a definição das variáveis, por:

extract($_POST);

Assim não é necessário alterar nada no formulário.

EDIT: depois, se der, vai postando como tá ficando...

Link para o comentário
Compartilhar em outros sites

O comando extract() realmente é uma mão na roda, porém verifiquei que ainda é necessário definir as variáveis no corpo do email. Tentei definir uma única variável tipo para a função extract() no começo do código tipo"$formularo = extract($_POST)" ou "$formulario = $_POST[extract($_POST)]" e no corpo colocar somente "$formulario" tentando assim automatizar boa parte do processo. Mais como esperado não deu certo.

Adcionei a condição else com a função die, pois quando se digita o endereço do envia.php no navegador sem o "?acao=verifica", era enviado uma mensagem em branco para acaixa de entrada do email.

Abaixo o código funcional:

<?
if($_GET[acao]=='verifica') {
extract($_POST);
}
else {
die ("Acesso negado!");
}

global $email; //função para validar a variável $email no script todo

$data      = date("d/m/y");                     //função para pegar a data de envio do e-mail
$ip        = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante
$hora      = date("H:i");                       //para pegar a hora com a função date

// defino o corpo do e-mail antes
$corpo = "Data: $data\nHora: $hora\nIp: $ip\nNavegador: $navegador\n\n####################\n\nNome: $nome\nDo que está precisando?: $precisando\nEndereco: $endereco\nTipo de conteúdo: $fotos , $videos , $audio , $animacao , $outros\nQuais?: $conteudooutros\nPretende usar um domínio?: $dominio\nJá sabe onde vai hospedar o site?: $hospedagem\nDetalhes: $detalhes\n\n$extract";

//aqui envia o e-mail para você
$envia = mail ("[email protected]", "Orcamento", $corpo, "From: $email");

if ($envia) {
     Header("location:http://wmashter.sites.uol.com.br/obrigado.html"); //essa é a página de obrigado.
     }
else {
echo "Problemas no envio, por favor tente novamente";
echo "<a href='http://wmashter.sites.uol.com.br/'>Voltar</a>"; /*no lugar de index.htm, coloque
a página para onde você deseja redirecionar caso o formulário apresente
algum problema no preenchimento.
*/
}

?>

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...