Ir para conteúdo

POWERED BY:

Arquivado

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

dinhotaswolf

[Resolvido] Como enviar valores de vários arrays para o e-mail pe

Recommended Posts

Olá pessoal não sei se estou na sessão correta, mas estou com um problema que creio a solução deva ser em PHP.

 

Estou enviando alguns dados através do formulário. Porém, as informações estão chegando no e-mail como demonstrado abaixo:

 

nome: 
telefone: 
email: 
assunto_mensagem: Orçamento
tipo: 
tipo: 
comp: 
comp: 
larg: 
larg: 
acab: 
acab: 
qtde: 
qtde: 
item: 
item: 
mensagem: 

Preciso que as informações sejam enviadas e chegue no e-mail como demonstrado abaixo:

 

nome: 
telefone: 
email: 
assunto_mensagem: Orçamento
tipo: 
comp: 
larg: 
acab: 
qtde: 
item: 
tipo1: 
comp1: 
larg1: 
acab1: 
qtde1: 
item1: 
mensagem: 

Como devo fazer isso.

 

O formmail esta recebendo os arrays abaixo:

 

 ["tipo"]=>array(2) {
   [0]=>string(9) "correia 1"
   [1]=>string(9) "correia 2"
 }
 ["comp"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["larg"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["acab"]=>array(2) {
   [0]=>string(6) "acab 1"
   [1]=>string(6) "acab 2"
 }
 ["qtde"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["item"]=>array(2) {
   [0]=>string(4) "Peça"
   [1]=>string(5) "Metro"
 }

 

Como fazer para enviar para o e-mail o segundo modelo descrito acima?

 

Fico grato por qualquer tipo de ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não precisa ordenar.

se você já conhece previamente os campos q você vai receber, use um for() para percorrer todos eles.

 

ao percorrer um grupo de campos com o mesmo indice no for(), você faz esse agrupamento que você quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código do meu formmmail é:

 

/* Textos que aparecem no programa */
$txt_msg = array(
				0 => 'O formulário não foi enviado pelas seguintes razões:<p>',
				1 => 'Use o botão voltar do seu navegador.<p>',
				2 => 'Você está enviando o formulário de uma origem <b>não autorizado</b>',
				3 => '<b>Precisa de um email de destinatário válido para continuar</b>',
				4 => 'Dados do Formulário'
			);

// controle interno
$versao = '1.0';
/* ############################################################################################# */
function imprimir_erro($razao,$tipo = 0) {
global $txt_msg;

if ($tipo=='falta'){
   	echo $txt_msg['0'];
	echo '<ul><b>' . $razao. '</b></ul>';
	echo $txt_msg['1'];
}else{ // every other error
    	echo $txt_msg['0'];
}	
echo "<br><br>\n</body></html>";
exit;
}
/* ############################################################################################# */
function verificar_referencia($referencia_formulario) {
global $txt_msg;
if(count($referencia_formulario)){
	$encontrado = false;
	$temp = explode('/',getenv('HTTP_REFERER'));
	$referencia = $temp[2];
	for($x=0; $x<count($referencia_formulario); $x++){
		if(eregi($referencia_formulario[$x], $referencia)){
			$encontrado = true;
		}
	}
	if(!getenv('HTTP_REFERER'))
		$encontrado = false;
	if(!$encontrado){
		imprimir_erro($txt_msg['2']);
		error_log("[formail.php] Referência Ilegal. (".getenv("HTTP_REFERER").")", 0);
	}
	return $encontrado;
   }else{
	return true;
}
}
/* ############################################################################################# */
function capturar_campos($array) {
global $txt_msg,$CFG,$csv_header;
$campos_reservados[] = 'destinatario';
$campos_reservados[] = 'obrigatorio';
$campos_reservados[] = 'assunto';
$campos_reservados[] = 'campos_faltando_redirecionar';
$campos_reservados[] = 'redirecionar';

if (count($array)){
	while (list($key, $val) = each($array)){
		$reservado_violado = 0;
		for ($i=0; $i<count($campos_reservados); $i++){
			if ($key == $campos_reservados[$i]){
				$reservado_violado = 1;
			}
		}
		if ($reservado_violado != 1){
			if (is_array($val)){
				for ($z=0;$z<count($val);$z++){
					$csv_header .= ($CFG['csv_style']==1)? $key.$CFG['csv_delimiter'] : '';
					$conteudo .= ($CFG['csv_style']==1)? $val[$z].$CFG['csv_delimiter'] : "$key: $val[$z]\r\n";
				}
			}else{
				$csv_header .= ($CFG['csv_style']==1)? $key.$CFG['csv_delimiter'] : '';
				$conteudo .= ($CFG['csv_style']==1)? $val.$CFG['csv_delimiter'] : "$key: $val\r\n";
			}
		}
	}
}

return $conteudo;
}
/* ############################################################################################# */
function mail_it($destinatario_email, $assunto, $corpo, $remetente_email) {
	$header  = !empty($remetente_email)? "From: $remetente_email\r\n" : '';
	$header .= !empty($remetente_email)? "Reply-To: $remetente_email\r\n" : '';
	$header .= "X-Mailer: PHP mail ver".phpversion()."\r\n";
       mail($destinatario_email, $assunto, $corpo, $header);
}
/* ############################################################################################# */
if(!empty($HTTP_GET_VARS)) {
while(list($xxxname, $value) = each($HTTP_GET_VARS)) {
	$$xxxname = $value;
   }
}
if(!empty($HTTP_POST_VARS)){
while(list($xxxname, $value) = each($HTTP_POST_VARS)) {
	$$xxxname = $value;
}
}
if(!empty($HTTP_POST_FILES)) {
while(list($xxxname, $value) = each($HTTP_POST_FILES)) {
   	$$xxxname = $value['tmp_name'];
   }
}
/* ############################################################################################# */
if(!empty($referencia_formulario)){
verificar_referencia($referencia_formulario);
}
/* ############################################################################################# */
$destinatario_array = split(',',$destinatario);
for($i=0; $i<count($destinatario_array); $i++){
$destinatario_testar = trim($destinatario_array[$i]);
if(!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,4}$", $destinatario_testar))	{
	imprimir_erro($txt_msg['3']);
}
}
/* ############################################################################################# */
if(!empty($obrigatorio)){
$campos_requeridos = $obrigatorio;
}

if(!empty($campos_requeridos)){
$campos_requeridos = split(',',$campos_requeridos);
for($i=0; $i<count($campos_requeridos); $i++){
	$key_campo = trim($campos_requeridos[$i]);
	if(empty($$key_campo)){
		if(!empty($campos_faltando_redirecionar)){
			echo ("<script>alert('Preencha todos os campos obrigatórios. Obrigado !!!');</script>");
			echo ("<script>location.href='$campos_faltando_redirecionar';</script>");
			exit;
		}
		echo ("<script>alert('Preencha todos os campos obrigatórios. Obrigado !!!');</script>");
		echo ("<script>location.href='javascript:history.back()';</script>");
	}/**/
}
}
/* ############################################################################################# */
if(empty($assunto)){
$assunto = $txt_msg['4'];
}
/* ############################################################################################# */
if(!empty($email) || !empty($EMAIL)){
$email = trim($email);
if ($EMAIL)
	$email = trim($EMAIL);
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$", $email)){
	echo ("<script>alert('Seu endereço de e-mail é invalido !!!');</script>");
	echo ("<script>location.href='$campos_faltando_redirecionar';</script>");
}
$EMAIL = $email;
}
/* ############################################################################################# */
$conteudo = capturar_campos($HTTP_POST_VARS);
$conteudo = $CFG['csv_style']==1 ? "\n\n".$csv_header."\n".$conteudo."\n" : $conteudo;
mail_it($destinatario, stripslashes($assunto), stripslashes($conteudo), $email);
/* ############################################################################################# */
if(!empty($redirecionar)){?>
<script>
	var resposta = confirm('Mensagem enviada com sucesso !!!\n\n\nSe deseja ir para página inicial, clique em (Sim/OK).\n\nSe deseja continuar no formulário, clique em (Não/Cancelar)');
	if(resposta)
	{
		location.href='<?=$redirecionar;?>';
	} else {
		location.href='<?=$campos_faltando_redirecionar;?>';
	}	
</script>";
<?
exit;
}else{
echo ("<script>alert('Mensagem enviada com sucesso !!!');</script>");
echo ("<script>location.href='javascript:history.back()';</script>");
exit;
}
?>

Vou pesquisar mais sobre funções PHP de ordenação de arrays. Estou tentando criar um trecho aqui e depois de testar posto se funcionar. Se não funcionar posto para pedir ajuda.

 

Fico grato por qualquer ajuda ou dica para dar inicio a solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá será que estou indo pelo caminho certo?

 

Se sim, levando em conta meu arquivo de formmail postado acima, onde devo implementa-lo.

 

Não testei porque não faço a menor ideia de onde implementa-lo. Pois, essa parte dos $_POST[] no código postado acima ele é realizado através de uma função "capturar_campos()" e creio que seja dentro dessa função que devo colocar o trecho abaixo:

 

$ar1_array = split(',',$ar1);
$ar2_array = split(',',$ar2);
$ar3_array = split(',',$ar3);
$ar4_array = split(',',$ar4);
$ar5_array = split(',',$ar5);
$ar6_array = split(',',$ar6);

for($i=0; $i<count($ar1_array); $i++){
	$ar1_testar = trim($ar1_array[$i]);
	$ar2_testar = trim($ar2_array[$i]);
	$ar3_testar = trim($ar3_array[$i]);
	$ar4_testar = trim($ar4_array[$i]);
	$ar5_testar = trim($ar5_array[$i]);
	$ar6_testar = trim($ar6_array[$i]);
}

Abaixo a função "capturar_campos()":

 

function capturar_campos($array) {
global $txt_msg,$CFG,$csv_header;
$campos_reservados[] = 'destinatario';
$campos_reservados[] = 'obrigatorio';
$campos_reservados[] = 'assunto';
$campos_reservados[] = 'campos_faltando_redirecionar';
$campos_reservados[] = 'redirecionar';

if (count($array)){
	while (list($key, $val) = each($array)){
		$reservado_violado = 0;
		for ($i=0; $i<count($campos_reservados); $i++){
			if ($key == $campos_reservados[$i]){
				$reservado_violado = 1;
			}
		}
		if ($reservado_violado != 1){
			if (is_array($val)){
				for ($z=0;$z<count($val);$z++){
					$csv_header .= ($CFG['csv_style']==1)? $key.$CFG['csv_delimiter'] : '';
					$conteudo .= ($CFG['csv_style']==1)? $val[$z].$CFG['csv_delimiter'] : "$key: $val[$z]\r\n";
				}
			}else{
				$csv_header .= ($CFG['csv_style']==1)? $key.$CFG['csv_delimiter'] : '';
				$conteudo .= ($CFG['csv_style']==1)? $val.$CFG['csv_delimiter'] : "$key: $val\r\n";
			}
		}
	}
}

return $conteudo;
}

Fico grato por qualquer tipo de ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos,

 

seguindo a dica dos amigos Andrey Knupp e William Bruno, tentei escreve algo e saiu o código abaixo:

 

$ar1 = $_POST['tipo'];
$ar2 = $_POST['comp'];
$ar3 = $_POST['larg'];
$ar4 = $_POST['acab'];
$ar5 = $_POST['qtde'];
$ar6 = $_POST['item'];

ksort($ar1);
ksort($ar2);
ksort($ar3);
ksort($ar4);
ksort($ar5);
ksort($ar6);

for ($i=0; $i<count($ar1); $i++) {
	var_dump($ar1[$i], $ar2[$i], $ar3[$i], $ar4[$i], $ar5[$i], $ar6[$i]);
	echo "<br>";
}

O resultado desse código:

 

string(2) "c1" string(1) "1" string(1) "1" string(2) "a1" string(1) "1" string(4) "Peça" 
string(2) "c2" string(1) "2" string(1) "2" string(2) "a2" string(1) "2" string(5) "Metro" 

Esse resultado é o que preciso.

 

No código do meu formmail onde devo colocar esse código?

 

Creio eu que seja na função "capturar_campos()". Lá é que é formado todo o corpo da mensagem e armazenado na variável $conteudo.

 

Não faço a menor ideia até o momento de como vou implementar isso. Pois, esse teste fiz fora do formmail.

 

Ps. O código citado no post anterior, estou desconsiderando totalmente.

 

Fico grato por qualquer ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pessoal pela ajuda.

 

Solucionei o problema com o código abaixo:

 

function capturar_campos($array) {
global $txt_msg,$CFG,$csv_header;
$campos_reservados[] = 'destinatario';
$campos_reservados[] = 'obrigatorio';
$campos_reservados[] = 'assunto';
$campos_reservados[] = 'campos_faltando_redirecionar';
$campos_reservados[] = 'redirecionar';

$ar1 = $_POST['tipo'];
$ar2 = $_POST['comp'];
$ar3 = $_POST['larg'];
$ar4 = $_POST['acab'];
$ar5 = $_POST['qtde'];
$ar6 = $_POST['item'];

ksort($ar1);
ksort($ar2);
ksort($ar3);
ksort($ar4);
ksort($ar5);
ksort($ar6);

if (count($array)){
	while (list($key, $val) = each($array)){
		$reservado_violado = 0;
		for ($i=0; $i<count($campos_reservados); $i++){
			if ($key == $campos_reservados[$i]){
				$reservado_violado = 1;
			}
		}
		if ($reservado_violado != 1){
			if (is_array($val)){
				if ($key == "tipo") {
					for ($i=0; $i<count($ar1); $i++) {
						$csv_header .= ($CFG['csv_style']==1)? $key.$CFG['csv_delimiter'] : '';
						$conteudo .= ($CFG['csv_style']==1)? $val[$i].$CFG['csv_delimiter'] : "Produtos pedidos ".$i.":\ntipo: ".$ar1[$i]."\r\ncomp: ".$ar2[$i]."\r\nlarg: ".$ar3[$i]."\r\nacab: ".$ar4[$i]."\r\nqtde: ".$ar5[$i]."\r\nitem: ".$ar6[$i]."\r\n\n";
					}
				} elseif ($key == "comp" || $key == "larg" || $key == "acab" || $key == "qtde" || $key == "item") {

				} else {
					for ($z=0;$z<count($val);$z++){
						$csv_header .= ($CFG['csv_style']==1)? $key.$CFG['csv_delimiter'] : '';
						$conteudo .= ($CFG['csv_style']==1)? $val[$i].$CFG['csv_delimiter'] : "$key: $val[$i]\r\n\n";
					}
				}
			}else{
				$csv_header .= ($CFG['csv_style']==1)? $key.$CFG['csv_delimiter'] : '';
				$conteudo .= ($CFG['csv_style']==1)? $val.$CFG['csv_delimiter'] : "$key: $val\r\n\n";
			}
		}
	}
}

return $conteudo;
}

Creio que mesmo com a gambiarra que fiz aí ele não vá dar problemas. O importante é que estou conseguindo enviar o formato correto para o e-mail.

 

O resultado do código acima no e-mail:

 

nome: 

telefone: 

email: 

assunto_mensagem: Orçamento

Produtos pedidos 0:
tipo: 
comp: 
larg: 
acab: 
qtde: 
item: 

Produtos pedidos 1:
tipo: 
comp: 
larg: 
acab: 
qtde: 
item: 

mensagem: 

Mas, se puderem me informar se pode vir a dar problema no meu código em virtude do trecho abaixo:

 

elseif ($key == "comp" || $key == "larg" || $key == "acab" || $key == "qtde" || $key == "item")

Fiz esse elseif e deixei vazio (sem nenhum tipo de código), para que essas opções fossem desconsideradas.

 

Caso não haja problemas, considero esse tópico finalizado. Caso haja problemas, espero dica do que posso colocar para não dar problemas futuros.

 

Novamente obrigado aos amigos Andrey Knupp e William Bruno que postaram suas dicas e me clarearam as ideias.

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.