Ir para conteúdo

Arquivado

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

Rapha Designer

CheckBox no formulário PHP

Recommended Posts

Boa Tarde!

 

Sempre criei formulários simples em PHP, não sou desenvolvedor, mas me aventuro um pouco.

Hoje me deparei com um problema, e preciso de uma solução Urgente, se possível.

 

Precisei inserir CheckBox no formulário. No HTML, está assim(resumido):

<form action="email_mkt.php" method="post" enctype="multipart/form-data" name="form1">
                     <div align="center"> <font color="#FF9900"><b><br>
                       </b></font></div>

               <p align="center"><strong>Nome Completo<br>
                 </strong>
                <input name="nome" type="text" id="nome" size="35" maxlength="100">
               </p>
               <p align="center"><strong>E-mail<br>
                 </strong>
                 <input name="email" type="text" id="email" size="35" maxlength="100">
               </p>
               <p align="center"><strong>Cidade/UF</strong><br>
                 <input name="cidade" type="text" id="cidade" size="26" maxlength="100">
                  / 
                 <input name="estado" type="text" id="estado" size="2" maxlength="2">
                  <br>
                 <br>
                 <strong>De quais principais temas você quer receber conteúdos?</strong></p>
               <table width="478" border="0" align="center">
                 <tbody>
                   <tr>
                     <th width="30" scope="col"><input name="comb" type="checkbox" id="1" value="rh"></th>
                     <th width="200" scope="col"><div align="left">Recursos Humanos</div></th>
                     <th width="30" scope="col"><input name="comb" type="checkbox" id="7" value="conhecimento"></th>
                     <th width="200" scope="col"><div align="left"><strong>Competências / Gestão do Conhecimento</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb" type="checkbox" id="2" value="rs"></th>
                     <th scope="col"><div align="left">Responsabilidade Social</div></th>
                     <th scope="col"><input name="comb" type="checkbox" id="8" value="legtrab"></th>
                     <th scope="col"><div align="left"><strong>Legislação Trabalhista / Previdenciária</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb" type="checkbox" id="3" value="lider"></th>
                     <th scope="col"><div align="left">Liderança</div></th>
                     <th scope="col"><input name="comb" type="checkbox" id="9" value="legtri"></th>
                     <th scope="col"><div align="left"><strong>Legislação Tributária / Fiscal</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb" type="checkbox" id="4" value="vendas"></th>
                     <th scope="col"><div align="left">Vendas e Atendimento</div></th>
                     <th scope="col"><input name="comb" type="checkbox" id="10" value="medicina"></th>
                     <th scope="col"><div align="left"><strong>Medicina Ocupacional</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb" type="checkbox" id="5" value="equipe"></th>
                     <th scope="col"><div align="left">Trabalho em Equipe/Relacionamento Interpessoal</div></th>
                     <th scope="col"><input name="comb" type="checkbox" id="11" value="log"></th>
                     <th scope="col"><div align="left"><strong>Logístic</strong>a</div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb" type="checkbox" id="6" value="admg"></th>
                     <th scope="col"><div align="left">Adminstração Geral</div></th>
                     <th scope="col"><input name="comb" type="checkbox" id="12" value="palestras"></th>
                     <th scope="col"><div align="left"><strong>Palestras</strong></div></th>
                     </tr>
                 </tbody>
               </table>
               <p align="center"><strong>Outros Temas:<br>
                 </strong>
                 <input name="outros" type="text" id="outros" size="65" maxlength="200">
               </p>
               <p align="center"><strong>OBS:</strong> Ao confirmar você autoriza o envio de propagandas on-line via e-mail <strong>marketing</strong> para o seu e-mail, se resguardando do direito de cancelar o seu cadastro de nosso banco de dados a qualquer momento.                </p>
               <div align="center">
                 <div align="center">
                   <input type="submit" name="Submit" value="Confirmar">
                   </div>
               </div>

               </form>

 

Creio que no HTML, os CheckBox estão certos, mas o problema é no PHP, segue o código completo:

<?

$nome = $_POST['nome'];
$email = $_POST['email'];
$cidade = $_POST['cidade'];
$estado = $_POST['estado'];
$outros = $_POST['outros'];


$mens = "<font face='Arial' size='3'>";
$mens .= "<b>Confirmação de E-mail</b><br><br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Nome Completo: ".$_POST['nome']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "E-mail: ".$_POST['email']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Cidade: ".$_POST['cidade']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Estado: ".$_POST['estado']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Outros Temas: ".$_POST['outros']." <br>";
$mens .= "---------------------------------------------<br>";
foreach($_POST["comb"] as $comb)
{
$mensagem .= "Temas : ". $comb." \n";
}
$mens .= "---------------------------------------------<br>";
$mens .= "<br>";
$mens .= "<br>";
$mens .= "Enviada em ".date("d/m/Y"). "<br>";

$headers = "From: <$email>\n";
$headers .= "X-Sender: <$email>\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";


mail("raphael.oliveira@toutatisbr.com","$assunto (Confirmação de E-mail)",$mens,$headers);
#treinamentosp@treinamentotoutatisbr.com
?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Confirmação de E-mail</title>
</head>

<body>


<script>
alert('Sua Confirmação foi enviada com sucesso!');
</script>


<script>
window.location.href='http://www.leiatual.toutatisbr.com/treinamentos/index.htm';
</script>

</body>

</html>

 

Alguém pode me ajudar?

 

Eu achei essas linhas aqui no fórum:

foreach($_POST["comb"] as $comb)
{
$mensagem .= "Temas : ". $comb." \n";
}

 

Mas não funcionou, não sei se coloquei no lugar correto.

 

E outra, como vocês viram, tenho vários checkbox.

 

Esse formulário, como já devem ter percebido, vai por e-mail.

 

Preciso mesmo de ajuda.

 

Desde já agradeço.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimenta colocar um par de colchetes ao final do atributo name:

 

<input name="comb[]" type="checkbox" id="12" value="palestras">

 

Dê um print_r() em $_POST e veja se as informações aparecem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou e não funcionou. Parou de dar o erro, mas não chegou nada no meu e-mail.

 

Chegou assim:

 

 

Confirmação de E-mail

 

---------------------------------------------

Nome Completo:

---------------------------------------------

E-mail:

---------------------------------------------

Cidade:

---------------------------------------------

Estado:

---------------------------------------------

Outros Temas:

---------------------------------------------

---------------------------------------------

 

Enviada em 16/05/2011

 

 

Aonde está Outros Temas: era pra chegar o que eu escolhi nos check's, porém, chegou em branco.

 

Mudei exatamente isso:

 

<input name="comb[]" type="checkbox" id="12" value="palestras">

 

Coloquei o [] como você disse, mas não funcionou.

 

Estou quase desistindo de utilizar checkbox...

 

Mas já agradeço pela ajuda.

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre use <?php ao invés de <?.

 

E você criou variáveis e não as usou.

$nome = $_POST['nome'];

 

Você colocou $_POST no e-mail em vez de por a variável $nome... e todas as outras.(isto é só uma observação, não daria erro ok)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre use <?php ao invés de <?.

 

E você criou variáveis e não as usou.

$nome = $_POST['nome'];

 

Você colocou $_POST no e-mail em vez de por a variável $nome... e todas as outras.(isto é só uma observação, não daria erro ok)

 

Ainda não deu certo, mesmo com as mudanças...

 

Olha o código PHP completo:

 

<?php

#$nome = $_POST['nome'];
#$email = $_POST['email'];
#$cidade = $_POST['cidade'];
#$estado = $_POST['estado'];
#$outros = $_POST['outros'];


$mens = "<font face='Arial' size='3'>";
$mens .= "<b>Confirmação de E-mail</b><br><br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Nome Completo: ".$_POST['nome']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "E-mail: ".$_POST['email']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Cidade: ".$_POST['cidade']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Estado: ".$_POST['estado']." <br>";
$mens .= "---------------------------------------------<br>";
$mens .= "Outros Temas: ".$_POST['outros']." <br>";
$mens .= "---------------------------------------------<br>";
foreach($_POST["comb"] as $comb)
{
$mensagem .= "Temas : ". $comb." \n";
}
$mens .= "<br>";
$mens .= "<br>";
$mens .= "Enviada em ".date("d/m/Y"). "<br>";

$headers = "From: <$email>\n";
$headers .= "X-Sender: <$email>\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";


mail("raphael.oliveira@toutatisbr.com","$assunto (Confirmação de E-mail)",$mens,$headers);
#treinamentosp@treinamentotoutatisbr.com

?>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Confirmação de E-mail</title>
</head>

<body>


<script>
alert('Sua Confirmação foi enviada com sucesso!');
</script>


<script>
window.location.href='http://www.leiatual.toutatisbr.com/treinamentos/confirmacao_email.html';
</script>

</body>

</html>

 

Juro que não consigo entender aonde está o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte, adicione estas linhas:

 

<?php

echo '<pre>';
var_dump( $_POST );

#$nome = $_POST['nome'];
#$email = $_POST['email'];
#$cidade = $_POST['cidade'];
#$estado = $_POST['estado'];
#$outros = $_POST['outros'];


$mens = "<font face='Arial' size='3'>";

entenda a saida, e corrija.

se tiver duvidas poste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim, quando você envia para o programa PHP algum elemento com [ colchetes ] no atributo name, o browser informa ao programa que existem múltiplas dimensões e/OU múltiplos elementos.

 

Do jeito que estava, se desse um print_r() sobre $_POST, na parte referente aos checkboxes, você veria um único índice chamado comb com valor igual ao último checkbo selecionado (mais ou botão é claro).

 

A partir do momento que você adiciona os colchetes, você vê algo mais ou menos assim:

 

Array
(
   [comb] => Array
       (
           [0] => palestras
           [1] => palestras2
           [2] => palestras3
           [3] => palestras4
       )

   [b] => Enviar dados
)

Ignore os valores, fiz um HTML bem porquinho só para explicar.

 

Se no seu programa você não vir algo como isso, deve haver algum problema no seu HTML pois o browser vai interpretar e passar para o programa e ele vai preencher o(s) array(s) superglobal(is) com aquilo que o browser passar para ele.

 

Obs.: Não sei se você vai precisar, mas fica a dica (mesm que isso seja outro meme :lol: ).

 

Você pode montar seu HTML com tantas dimensões quantas você ache necessário, porém só a última pode ter colchetes vazios (questões de estrutura). Ex:

 

<input name="comb['categoria']['subcategoria'][]" type="checkbox" id="12" value="palestras">

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte, adicione estas linhas:

 

<?php

echo '<pre>';
var_dump( $_POST );

#$nome = $_POST['nome'];
#$email = $_POST['email'];
#$cidade = $_POST['cidade'];
#$estado = $_POST['estado'];
#$outros = $_POST['outros'];


$mens = "<font face='Arial' size='3'>";

entenda a saida, e corrija.

se tiver duvidas poste.

 

Depois que coloquei isso, apareceu isso, mas no e-mail, não chegou nada.

 

array(7) {

["nome"]=>

String (0) ""

["email"]=>

String (0) ""

["cidade"]=>

String (0) ""

["estado"]=>

String (0) ""

["comb"]=>

array(6) {

[0]=>

String (2) "rh"

[1]=>

String (2) "rs"

[2]=>

String (7) "legtrab"

[3]=>

String (5) "lider"

[4]=>

String (6) "legtri"

[5]=>

String (3) "log"

}

["outros"]=>

String (0) ""

["Submit"]=>

String (9) "Confirmar"

}

 

Vou tentar mais uma vez. Cara, na boa, eu até gosto de programação, mas eu não sou programador, sou Designer, e essa empresa exige de mim o que eu não sei. Não fui contratado para isso, fiz facu de Design.

Ainda bem que tenho vcs pra me ajudar.

Obrigado por estarem me ajudando.

 

outra coisa, esqueci de colocar o HTML completo, caso vocês achem que o problema está no HTML:

 

<html>
<head>
<link rel="stylesheet" href="ggi.css" type="text/css">
<title>Toutatis Treinamentos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
background-image: url(http://www.leiatual.toutatisbr.com/treinamentos/img/novo_email_mkt/fundo.jpg);
}
-->
</style></head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr> 
   <td background="img/fundo2.gif"> 
     <table width="760" border="0" cellspacing="0" cellpadding="0" align="center">
       <tr> 
         <td><img src="img/top_new.jpg" width="760"></td>
       </tr>
       <tr> 
         <td height="28" valign="middle"> <table width="760" border="0" cellspacing="0" cellpadding="0">
             <tr> 
               <td><a href="index.htm"><img src="img/home1.gif" width="84" height="51" border="0"></a></td>
               <td><a href="programacao.htm"><img src="img/programa2.gif" width="126" height="51" border="0"></a></td>
               <td><a href="inscricao.htm"><img src="img/inscricao3.gif" width="91" height="51" border="0"></a></td>
               <td><a href="incompany.htm"><img src="img/incompany4.gif" width="116" height="51" border="0"></a></td>
               <td><a href="instrutores.htm"><img src="img/instrutores5.gif" width="109" height="51" border="0"></a></td>
               <td><a href="quemsomos.htm"><img src="img/quem6.gif" width="117" height="51" border="0"></a></td>
               <td><a href="faleconosco.htm"><img src="img/conosco7.gif" width="117" height="51" border="0"></a></td>
             </tr>
           </table></td>
       </tr>
       <tr> 
         <td height="200" valign="top" bgcolor="#FFFFFF"><table width="725" border="0" align="center" cellpadding="2" cellspacing="0">
           <tr>
             <td bgcolor="#FF6600"><img src="img/confirmacao_email.jpg" width="725" height="151"></td>
           </tr>
         </table>
           <table width="600" border="0" align="center" cellpadding="2" cellspacing="0">
             <tr>
             <td><p align="center">Prezado Sr.(a) </p>
<p align="justify">A Toutatis é contra o SPAM. Por isso criamos esta área, que regulamenta o nosso uso de  propaganda on-line via e-mail marketing e autoriza a utilização profissional de  seu e-mail em nosso banco de dados, para envio de agenda de treinamentos.</p>
               <p align="justify">Assim, convidamos você a preencher os campos abaixo e  autorizar o uso de seu e-mail, para o envio de propagandas on-line somente de  seu interesse.</p>
               <p align="justify">Atenção. Os campos Nome e E-mail são de preenchimento  obrigatório.</p>


               <form action="email_mkt.php" method="post" enctype="multipart/form-data" name="form1">
                     <div align="center"> <font color="#FF9900"><b><br>
                       </b></font></div>

               <p align="center"><strong>Nome Completo<br>
                 </strong>
                <input name="nome" type="text" id="nome" size="35" maxlength="100">
               </p>
               <p align="center"><strong>E-mail<br>
                 </strong>
                 <input name="email" type="text" id="email" size="35" maxlength="100">
               </p>
               <p align="center"><strong>Cidade/UF</strong><br>
                 <input name="cidade" type="text" id="cidade" size="26" maxlength="100">
                  / 
                 <input name="estado" type="text" id="estado" size="2" maxlength="2">
                  <br>
                 <br>

                 <!-- começa CHEBOX's-->

                 <strong>De quais principais temas você quer receber conteúdos?</strong></p>
               <table width="478" border="0" align="center">
                 <tbody>
                   <tr>
                     <th width="30" scope="col"><input name="comb[]" type="checkbox" id="1" value="rh"></th>
                     <th width="200" scope="col"><div align="left">Recursos Humanos</div></th>
                     <th width="30" scope="col"><input name="comb[]" type="checkbox" id="7" value="conhecimento"></th>
                     <th width="200" scope="col"><div align="left"><strong>Competências / Gestão do Conhecimento</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb[]" type="checkbox" id="2" value="rs"></th>
                     <th scope="col"><div align="left">Responsabilidade Social</div></th>
                     <th scope="col"><input name="comb[]" type="checkbox" id="8" value="legtrab"></th>
                     <th scope="col"><div align="left"><strong>Legislação Trabalhista / Previdenciária</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb[]" type="checkbox" id="3" value="lider"></th>
                     <th scope="col"><div align="left">Liderança</div></th>
                     <th scope="col"><input name="comb[]" type="checkbox" id="9" value="legtri"></th>
                     <th scope="col"><div align="left"><strong>Legislação Tributária / Fiscal</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb[]" type="checkbox" id="4" value="vendas"></th>
                     <th scope="col"><div align="left">Vendas e Atendimento</div></th>
                     <th scope="col"><input name="comb[]" type="checkbox" id="10" value="medicina"></th>
                     <th scope="col"><div align="left"><strong>Medicina Ocupacional</strong></div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb[]" type="checkbox" id="5" value="equipe"></th>
                     <th scope="col"><div align="left">Trabalho em Equipe/Relacionamento Interpessoal</div></th>
                     <th scope="col"><input name="comb[]" type="checkbox" id="11" value="log"></th>
                     <th scope="col"><div align="left"><strong>Logístic</strong>a</div></th>
                     </tr>
                   <tr>
                     <th scope="col"><input name="comb[]" type="checkbox" id="6" value="admg"></th>
                     <th scope="col"><div align="left">Adminstração Geral</div></th>
                     <th scope="col"><input name="comb[]" type="checkbox" id="12" value="palestras"></th>
                     <th scope="col"><div align="left"><strong>Palestras</strong></div></th>
                     </tr>
                 </tbody>
               </table>
               <p align="center"><strong>Outros Temas:<br>
                 </strong>
                 <input name="outros" type="text" id="outros" size="65" maxlength="200">
               </p>

               <!-- fim dos checkbox's-->

                 <strong>OBS:</strong> Ao confirmar você autoriza o envio de propagandas on-line via e-mail <strong>marketing</strong> para o seu e-mail, se resguardando do direito de cancelar o seu cadastro de nosso banco de dados a qualquer momento.                
               <div align="center">
                 <div align="center"><br>
                   <input type="submit" name="Submit" value="Confirmar">
                   </div>
               </div>

               </form>

               <p>Para cancelamento, <a href="mailto:treinamentosp@treinamentotoutatisbr.com">clique aqui</a>, ou envie e-mail para treinamentosp@treinamentotoutatisbr.com</p></td>
           </tr>
         </table></td>
       </tr>
       <tr> 
         <td height="60" background="img/baixo2.gif"> <div align="center">Toutatis Brasil.<br>
             Rua da Quitanda, 101, 1º andar - Centro - CEP 01012-001 
             - São Paulo - SP - Brasil <br>
             Fone: SP (11) 3614-4047</div></td>
       </tr>
     </table></td>
 </tr>
</table>
</body>
</html>
<script language="JavaScript">
function abrir(URL) {
   var width = 252;
   var height = 282;
   var left = 99;
   var top = 99;
   window.open(URL,'Boletim', 'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=no, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no');
}
</script>
<script language="JavaScript">
function abrir(URL) {
  var width = 252;
  var height = 282;
  var left = 99;
  var top = 99;
  window.open(URL,'Boletim', 'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=no, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no');
}
</script>

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém tem um link, ou um arquivo de HTML e PHP com formulário com CHEBOX pronto???? Sem My SQL, ou qualquer tipo de BD, somente com envio direto para e-mail.

Eu não achei aqui no site, se eu achasse um arquivo pronto, resolveria o meu problema.

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.