simas 0 Denunciar post Postado Novembro 2, 2009 Olá a todos. Estou com a seguinte situação: O usuário preenche um formulario e essa informação chega no e-mail desejado por mim e vai uma cópia de confirmação para o e-mail dele. Neste formulario tem campos de checkbox e não estou conseguindo fazer esta informação chegar nos e-mails. Já vi vários exemplos na internet, mas está dando erro comigo, como não tenho muito noção de php, não estou conseguindo resolver. Na minha página de formulario existem vários campos, porém só vou colocar a parte do checkbox que é o que interessa pois os outros campos chegam normalmente, quando eu não tento pegar as informações do checkbox. No meu checkbox do formulário estou fazendo da seguinte forma <input type="checkbox" name="enteraste[]" id="enteraste" value="Pagina_web" /> <input type="checkbox" name="enteraste[]" id="enteraste" value="facebook" /> <input type="checkbox" name="enteraste[]" id="enteraste" value="linkedin" /> ... <input type="checkbox" name="idioma[]" id="idioma" value="ingles" /> <input type="checkbox" name="idioma[]" id="idioma" value="aleman" /> <input type="checkbox" name="idioma[]" id="idioma" value="frances" /> A seguir a página que processa as informações do e-mail e envia para usuario que digitou o formulário e para um outro e-mail que eu escolho. Nesta página tem as variáveis dos outros campos que tem no formulário e chegam no email normalmente. O código que tento pegar o checkbox é (só to colocando aqui o código pra pegar um grupo de checkbox) foreach ($_POST['enteraste'] as $key => $value) { echo “Key: $key; Value: $value<br>”; } Porém deu o seguinte erro justamente na linha que eu coloco o foreach " PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\home\colombia\Web\formulario\form.php on line 49 " Eu também tentei este código, mas deu erro tb if(isset($_POST["enteraste"])) { echo "A(s) checkbox selecionadas foram:<BR>"; // Faz loop pelo array variavel foreach($_POST["enteraste"] as $variavel ) { echo "enteraste:" . $variavel . "<br />"; } } else { echo "Voce nao escolheu nenhuma checkbox! <br />"; } Também tentei este e o mesmo erro foreach ($_POST['enteraste'] as $interessa) { $enteraste.= $interessa." - "; } echo $enteraste; Página que processa o formulário <?php $date = date("d/m/Y h:i"); // ****** ATENÇÃO ******** // ABAIXO ESTÁ A CONFIGURAÇÃO DO SEU FORMULÁRIO. // ****** ATENÇÃO ******** //CABEÇALHO - ONFIGURAÇÕES SOBRE SEUS DADOS E SEU WEBSITE $nome_do_site="Colombia 2009"; $email_para_onde_vai_a_mensagem = "simascal@bol.com.br"; $nome_de_quem_recebe_a_mensagem = "formulario"; $exibir_apos_enviar='enviado.php'; //MAIS - CONFIGURAÇOES DA MENSAGEM ORIGINAL $cabecalho_da_mensagem_original="From: $name <$email>\n"; $assunto_da_mensagem_original="Registro "; // FORMA COMO RECEBERÁ O E-MAIL (FORMULÁRIO) // ******** OBS: SE FOR ADICIONAR NOVOS CAMPOS, ADICIONE OS CAMPOS NA VARIÁVEL ABAIXO ************* $configuracao_da_mensagem_original=" ENVIADO POR:\n nombre: $nombre\n paterno: $paterno\n materno: $materno\n email: $email\n confirme_email: $confirme_email\n telefone: $telefono\n ciudad: $ciudad\n departamento: $departamento\n soy: $soy\n sexo: $sexo\n edad: $edad\n carrera: $carrera\n; universidad: $universidad\n semestre: $semestre\n estudios: $estudios\n planeas: $planeas\n planea: $planea\n interesa_estudiar: $interesa_estudiar\n campos_interes: $campos_interes\n idioma: $idioma\n visitar: $visitar\n foreach ($_POST['enteraste'] as $key => $value) { echo “Key: $key; Value: $value<br>”; } \n ENVIADO EM: $date "; //CONFIGURAÇÕES DA MENSAGEM DE RESPOSTA // CASO $assunto_digitado_pelo_usuario="s" ESSA VARIAVEL RECEBERA AUTOMATICAMENTE A CONFIGURACAO // "Re: $assunto" $assunto_da_mensagem_de_resposta = "colombia"; $cabecalho_da_mensagem_de_resposta = "From: $nome_do_site <$email_para_onde_vai_a_mensagem>\n"; $configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\nEstaremos respondendo em breve...\nAtenciosamente, nombre: $nombre\n paterno: $paterno\n materno: $materno\n email: $email\n confirme_email: $confirme_email\n telefone: $telefono\n ciudad: $ciudad\n departamento: $departamento\n soy: $soy\n sexo: $sexo\n edad: $edad\n carrera: $carrera\n universidad: $universidad\n semestre: $semestre\n estudios: $estudios\n planeas: $planeas\n planea: $planea\n interesa_estudiar: $interesa_estudiar\n campos_interes: $campos_interes\n idioma: $idioma\n visitar: $visitar\n foreach ($_POST['enteraste'] as $key => $value) { echo “Key: $key; Value: $value<br>”; } \n \nEnviado em: $date"; // ****** IMPORTANTE ******** // A PARTIR DE AGORA RECOMENDA-SE QUE NÃO ALTERE O SCRIPT PARA QUE O SISTEMA FINCIONE CORRETAMENTE // ****** IMPORTANTE ******** //ESSA VARIAVEL DEFINE SE É O USUARIO QUEM DIGITA O ASSUNTO OU SE DEVE ASSUMIR O ASSUNTO DEFINIDO //POR VOCÊ CASO O USUARIO DEFINA O ASSUNTO PONHA "s" NO LUGAR DE "n" E CRIE O CAMPO DE NOME //'assunto' NO FORMULARIO DE ENVIO $assunto_digitado_pelo_usuario="n"; //ENVIO DA MENSAGEM ORIGINAL $headers = "$cabecalho_da_mensagem_original"; if ($assunto_digitado_pelo_usuario=="n") { $assunto = "$assunto_da_mensagem_original"; }; $seuemail = "$email_para_onde_vai_a_mensagem"; $mensagem = "$configuracao_da_mensagem_original"; mail($seuemail,$assunto,$mensagem,$headers); //ENVIO DE MENSAGEM DE RESPOSTA AUTOMATICA $headers = "$cabecalho_da_mensagem_de_resposta"; if ($assunto_digitado_pelo_usuario=="n") { $assunto = "$assunto_da_mensagem_de_resposta"; } else { $assunto = "RE: $assunto"; }; $mensagem = "$configuracao_da_mensagem_de_resposta"; mail($email,$assunto,$mensagem,$headers); echo "<script>window.location='$exibir_apos_enviar'</script>"; ?> Desde já agradeço a ajuda. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 2, 2009 Usa o implode que é mais fácil. Mais ou menos assim. $configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\nEstaremos respondendo em breve...\nAtenciosamente, nombre: $nombre\n paterno: $paterno\n materno: $materno\n email: $email\n confirme_email: $confirme_email\n telefone: $telefono\n ciudad: $ciudad\n departamento: $departamento\n soy: $soy\n sexo: $sexo\n edad: $edad\n carrera: $carrera\n universidad: $universidad\n semestre: $semestre\n estudios: $estudios\n planeas: $planeas\n planea: $planea\n interesa_estudiar: $interesa_estudiar\n campos_interes: $campos_interes\n idioma: $idioma\n visitar: $visitar\n enteraste:".implode(', ',$_POST['enteraste'])." \n \nEnviado em: $date"; Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
simas 0 Denunciar post Postado Novembro 2, 2009 Obrigado Carlos. Funcionou. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
simas 0 Denunciar post Postado Novembro 3, 2009 Olá, fazendo testes. percebi se o usuário não clicar no checkbox, ou seja mandar o formulario sem selecionar uma das opções do checkbox da a seguinte mensagem. E isso é possível já que os checkbox não são campos obrigatórios. PHP Warning: implode() [function.implode]: Invalid arguments passed in E:\home\colombi\Web\formulario\form_euro.php on line 47 PHP Warning: implode() [function.implode]: Invalid arguments passed in Eu tentei utilzar isso daqui mas deu erro . . . idiomaotro: $idiomaotro\n visitar: $visitar\n if(isset($_POST['enteraste'])) { enteraste:".implode(', ',$_POST['enteraste'])."\n } else { echo "Voce nao escolheu enteraste! <br />"; } erro PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\home\europosgradoscolombi\Web\form_euro.php on line 47 Alguém sabe como eu posso fazer para aceitar passar o as campos em branco. Obrigado a todos. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Nito 1 Denunciar post Postado Novembro 3, 2009 Você quer deixar obrigatório esse campo? Se quiser, dá pra usar javascript, aparecendo uma mensagem que o usuario não selecionou nenhuma alternativa na checkbox. Compartilhar este post Link para o post Compartilhar em outros sites
simas 0 Denunciar post Postado Novembro 3, 2009 Olá, estes campos de checkbox não podem ser obrigatórios. O usuário poderá deixa-los em branco. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 3, 2009 Você não pode colocar condicionais como você fez. Teria que ser algo assim. $configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\nEstaremos respondendo em breve...\nAtenciosamente, nombre: $nombre\n paterno: $paterno\n materno: $materno\n email: $email\n confirme_email: $confirme_email\n telefone: $telefono\n ciudad: $ciudad\n departamento: $departamento\n soy: $soy\n sexo: $sexo\n edad: $edad\n carrera: $carrera\n universidad: $universidad\n semestre: $semestre\n estudios: $estudios\n planeas: $planeas\n planea: $planea\n interesa_estudiar: $interesa_estudiar\n campos_interes: $campos_interes\n idioma: $idioma\n visitar: $visitar\n'; if(isset($_POST['enteraste'])) $configuracao_da_mensagem_de_resposta .= implode(', ',$_POST['enteraste']).'\n'; $configuracao_da_mensagem_de_resposta .=Enviado em: $date"; Utilizando o .= eu concatenei a $configuracao_da_mensagem_de_resposta, que é o conteúdo que vai ser enviado para o e-mail. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
simas 0 Denunciar post Postado Novembro 3, 2009 Obrigado Carlos mais uma vez pela ajuda, porém deu erro. PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\home\europosgradoscolombi\Web\form_euro.php on line 87 E em relação ao que você fez, terei que colocar mais outros campos que são checkbox, como faria para acrescentar além do enteraste. Por exemplo terei que q acrescentar idioma e pais, como ficaria? if(isset($_POST['enteraste'])) $configuracao_da_mensagem_de_resposta .= implode(', ',$_POST['enteraste']).'\n';$configuracao_da_mensagem_de_resposta .=Enviado em: $date"; Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 3, 2009 Errinho de aspas... $configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\nEstaremos respondendo em breve...\nAtenciosamente, nombre: $nombre\n paterno: $paterno\n materno: $materno\n email: $email\n confirme_email: $confirme_email\n telefone: $telefono\n ciudad: $ciudad\n departamento: $departamento\n soy: $soy\n sexo: $sexo\n edad: $edad\n carrera: $carrera\n universidad: $universidad\n semestre: $semestre\n estudios: $estudios\n planeas: $planeas\n planea: $planea\n interesa_estudiar: $interesa_estudiar\n campos_interes: $campos_interes\n idioma: $idioma\n visitar: $visitar\n"; if(isset($_POST['enteraste'])) $configuracao_da_mensagem_de_resposta .= implode(', ',$_POST['enteraste']).'\n'; $configuracao_da_mensagem_de_resposta .=Enviado em: $date"; É a mesma lógica. Veja o que eu fiz. if(isset($_POST['enteraste'])) Aqui eu testei de a $_POST['enteraste'] existe. Se existir, executa o que tem na frente da condição, que é isto. $configuracao_da_mensagem_de_resposta .= implode(', ',$_POST['enteraste']).'\n'; Quando eu uso .=, estou dizendo o seguinte. "Pegue o conteúdo desta variável ($configuracao_da_mensagem_de_resposta) e adicione este conteúdo que eu estou colocando aqui". Ou seja, se ele tiver marcado pelo menos 1 checkbox, vai entra no implode. Se não marcar nenhum, a $_POST['enteraste'] não vai existir e não vai entrar no implode, evitando assim o erro que estava dando. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites