Ir para conteúdo

POWERED BY:

Arquivado

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

Valdemir Junior

Como enviar um checkbox via array por email

Recommended Posts

Pessoal, alguém poderia me ajudar em uma questão?

Criei um formulário de envio de dados para meu e-mail (método POST) - adicionei campos necessários para receber as informações no meu -email, mas devo ter esquecido de algo ou estar fazendo errado (sou apenas um curioso em PHP) não tenho muita prática no código mas consegui que ele me devolvesse o campo MENSAGEM, criei um foreach para passar o código mas os campos checkbox e radio me retornam no email apenas aspas " " - não retornando o valor marcado no formulário. 
Alguém poderia me ajudar? Abaixo segue meu código...


Meu html:

 

<input id="checkbox1" type="checkbox" name="caixas[]" value="Criação de logotipo"><label for="checkbox1"><span></span>Criação de logotipo</label>
</div>
<div>
<input id="checkbox2" type="checkbox" name="caixas[]" value="Criação de identidade visual"><label for="checkbox2"><span></span>Criação de identidade visual</label>
</div>
<div>
<input id="checkbox3" type="checkbox" name="caixas[]" value="Criação de material gráfico"><label for="checkbox3"><span></span>Criação de material gráfico (cartão, papelaria, etc)</label>
</div>
<div>
<input id="checkbox4" type="checkbox" name="caixas[]" value="Criação de material digital"><label for="checkbox4"><span></span>Criação de material digital (redes sociais, icones, etc)</label>
</div>
<div>
<input id="checkbox5" type="checkbox" name="caixas[]" value="Redesign de logotipo"><label for="checkbox5"><span></span>Redesign de logotipo</label>

 

 


php:

 

 

<?php

if(!$_POST) exit;

function isEmail($email) {
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|xxxxxx|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|você|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['name'];
$email    = $_POST['email'];
$comments = $_POST['comments'];
$opcao = '';

foreach((array)$_POST['caixas'] as $caixas)

{

$opcao .= $caixas.'<br>';

}

$opcao_tempo = '';

foreach((array)$_POST['valores'] as $valores)

{

$opcao_tempo .= $valores.'<br>';

}

if(trim($name) == '') {
echo '<div class="error_message">Por favor, entre com seu nome.</div>';
exit();
} else if(trim($email) == '') {
echo '<div class="error_message">Entre com um e-mail válido.</div>';
exit();
} else if(!isEmail($email)) {
echo '<div class="error_message">xii... e-mail inválido. Tente novamente!</div>';
exit();
}


if(get_magic_quotes_gpc()) {
$comments = stripslashes($comments);
}

$address = "valdemir_juniior@hotmail.com";

$e_subject = 'You have been contacted by ' . $name . '.';

$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = "\"$caixas\"" . PHP_EOL . PHP_EOL;
$e_opcao_tempo = "\"$valores\"" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: $email";


$msg = wordwrap( $e_body . $e_opcao . $e_opcao_tempo . $e_content . $e_reply, 70 );

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {


echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h3>Sua solicitação foi enviada com sucesso!</h3>";
echo "<p>Obrigado <strong>$name</strong>, logo receberá novidades bacanas.</p>";
echo "</div>";
echo "</fieldset>";

} else {

echo 'ERROR!';

}

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite! Seja bem vindo ao fórum. Recomendo fortemente a leitura de nossas regras da área e dicas sobre PHP:

 
Com relação a sua dúvida, você precisa utilizar um laço for() para percorrer os campos enviados.
 
$opcao='';
for($i=0; $i <= count($_POST['caixas']); $i++){
$opcao.= $_POST['caixas'][$i].'<br>';
}
http://php.net/manual/pt_BR/control-structures.for.php

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Valdemir Junior disse:

$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL; $e_opcao = "\"$caixas\"" . PHP_EOL . PHP

Tente atribuir em lugar de $caixas colocar $opcao

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Valdemir Junior, utilize a função implode onde você quer acrescentar algo, dê uma lida no manual e faça um pequeno estudo com prática.

 

http://php.net/manual/pt_BR/function.implode.php

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, Alaerte Gabriel disse:

Boa noite! Seja bem vindo ao fórum. Recomendo fortemente a leitura de nossas regras da área e dicas sobre PHP:

 
Com relação a sua dúvida, você precisa utilizar um laço for() para percorrer os campos enviados.
 

$opcao='';
for($i=0; $i <= count($_POST['caixas']); $i++){
$opcao.= $_POST['caixas'][$i].'<br>';
}
http://php.net/manual/pt_BR/control-structures.for.php

Obrigado pelas boas-vindas :D

Cara, ainda bem que me deu essa solução eu estava usando o foreach para rodar o array. Vou testar aqui e aviso. 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Alaerte Gabriel disse:

@Valdemir Junior, utilize a função implode onde você quer acrescentar algo, dê uma lida no manual e faça um pequeno estudo com prática.

 

http://php.net/manual/pt_BR/function.implode.php

 

Vou dar uma lida aqui, sou designer sabe e to começando a pender pra programação kkkk... 
é dificil mas se rodar esse formulário já ficarei feliz. Obrigado pelo retorno :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais fácil impossível:

$variavel = implode('<br>', $_POST['caixas']);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 minutos atrás, Valdemir Junior disse:

Vou dar uma lida aqui, sou designer sabe e to começando a pender pra programação kkkk... 
é dificil mas se rodar esse formulário já ficarei feliz. Obrigado pelo retorno :D

Só você aplicar o for lá. Do jeito que te passei também roda, não precisa necessariamente do implode.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, testei aqui... mas ainda recebo valor nulo no e-mail.

testei novamente nomeando as strings  igual a  variavel que envia a informação $opcao | $opcao_tempo conforme @paulodsn orientou mas recebo apenas os "<br>" que estão dentro do laço( ).
Eu teria de criar um array setando os itens 1 por 1 e usar o implode para concatenar? Ou teria alguma opção dentro desse código?
Sem a mudança... ele me traz apenas " " conforme abaixo:

Heey... recebemos um e-mail para cadastrar de designer. Favor incluir
em nossa base de dados.

""

""

"teste de envio de formulario"

Solicitação enviada por designer via email: designer@hotmail.com


abaixo segue meu código para análise no que estou errando :/

$name     = $_POST['name'];
$email    = $_POST['email'];
$comments = $_POST['comments'];

$opcao ='';
for($i=0; $i <= count($_POST['caixas']); $i++){
$opcao.= $_POST['caixas'][$i].'<br>';

}

$opcao_tempo ='';
for($i=0; $i <= count($_POST['valores']); $i++){
$opcao_tempo.= $_POST['valores'][$i].'<br>';
}

//variaves que enviam os valores pro email

$e_subject = 'You have been contacted by ' . $name . '.';

$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = "\"$caixas\"" . PHP_EOL . PHP_EOL;
$e_opcao_tempo = "\"$valores\"" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: $email";

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa. @Valdemir Junior, note que neste trecho:

$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = "\"$caixas\"" . PHP_EOL . PHP_EOL;
$e_opcao_tempo = "\"$valores\"" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: $email";

Tu não passou nenhuma das variáveis

$opcao_tempo e/ou $opcao

 

É só alterar no local correto:

 

 

$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = "\"$opcao\"" . PHP_EOL . PHP_EOL;
$e_opcao_tempo = "\"$opcao_tempo\"" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: $email";

Entendeu ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Alaerte Gabriel disse:

Opa. @Valdemir Junior, note que neste trecho:


$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = "\"$caixas\"" . PHP_EOL . PHP_EOL;
$e_opcao_tempo = "\"$valores\"" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: $email";

Tu não passou nenhuma das variáveis

$opcao_tempo e/ou $opcao

 

É só alterar no local correto:

 

 


$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = "\"$opcao\"" . PHP_EOL . PHP_EOL;
$e_opcao_tempo = "\"$opcao_tempo\"" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: $email";

Entendeu ?

 

Então o for( ) é apenas para pegar os valores dentro de [  ] e a variável sendo nomeada igual a string imprime o resultado no email? Fui claro sera? kkkk

 

Achei que a variável $opcao receberia o  valor de [  ] para imprimir :DD ...

 

Vou testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda sem sucesso... ele me traz a formatação <br> no e-mail, mas não os valores das variáveis.

Heey... recebemos um e-mail para cadastrar de juca. Favor incluir em
nossa base de dados.

"<br>"

"<br>"

"teste de envio 2"

Solicitação enviada por juca via email: juca@hotmail.com

 

$e_subject = 'You have been contacted by ' . $name . '.';

$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = "\"$opcao\"" . PHP_EOL . PHP_EOL;
$e_opcao_tempo = "\"$opcao_tempo\"" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: $email";

Ele da como "enviado" na mensagem do servidor... tirando o erro que tinha antes, mas ainda assim não me retorna a opção marcada. ://
To ficando louco com a quantidade e variedade de tentativas que fiz hahaha

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Valdemir Junior, Não tem segredo cara... da uma estudada e vai praticando sobre o assunto. Verifica que se você atribuiu todas essas variáveis com os valores dentro da variável $msg

 

$e_subject = 'You have been contacted by ' . $name . '.';

$e_body = "Heey... recebemos um e-mail para cadastrar de $name. Favor incluir em nossa base de dados." . PHP_EOL . PHP_EOL;
$e_opcao = $opcao.PHP_EOL.PHP_EOL;
$e_opcao_tempo = $opcao_tempo.PHP_EOL.PHP_EOL;
$e_content = $comments.PHP_EOL.PHP_EOL;
$e_reply = "Solicitação enviada por $name via email: ".$email;

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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