Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde Srs. estou com uma duvida que parece ser muito simples mais como nunca usei estou empacado nisso, vejam se podem me ajudar. Eu tenho um formulário com campos dinâmicos que o usuário pode ir adicionando conforme deseja, é uma listagem de compras de um supermercado.
<label>Preencha os campos abaixo com os produtos que deseja comprar:</label>
<br />
<table border="0" cellpadding="5" id="listas">
<tr>
<th style="color:#000;" align="center">Produto/Descrição</th>
<th style="color:#000;" align="center">Marca</th>
<th style="color:#000;" align="center">Quantidade</th>
</tr>
<tr>
<td align="center"><input type="text" name="produto[]" id="produto" maxlength="150"></td>
<td align="center"><input type="text" name="marca[]" id="marca" maxlength="150"></td>
<td align="center"><input type="text" name="quantidade[]" id="quantidade" maxlength="10"></td>
</tr>
</table>
<br />
<input type="button" id="add_field" value="Adicionar">
Quando a pessoa envia o formulário os dados que a pessoa preenche Marca, Produto e Quantidade não vem junto com o form. Fiz de algumas formas para recuperar esse array, mais não estou conseguindo. Vejam como estou fazendo no momento.
<?php
if(strpos($_SERVER['HTTP_REFERER'],'super.com.br')) {
session_start();
// chamada da classe phpmailer
require_once('mailer/class.phpmailer.php');
require_once('mailer/class.smtp.php');
// resgatando os dados passados pelo form
$assunto = "Compras Online";
$nome=$_POST["nome"];
$email=$_POST["email"];
$telefone=$_POST["telefone"];
$celular=$_POST["celular"];
$endereco=$_POST["endereco"];
$horario=$_POST["horario"];
$pagamento=$_POST["pagamento"];
$produto=$_POST["produto"];
$marca=$_POST["marca"];
$quantidade=$_POST["quantidade"];
$cartao=$_POST["cartao"];
$cpf=$_POST["cpf"];$ip = $_SERVER['REMOTE_ADDR']; //hidden
$navegador = $_SERVER['HTTP_USER_AGENT']; //hidden
// faço a chamada da classe
$Email = new PHPMailer();
$Email->IsSMTP(); // set mailer to use SMTP
$Email->SMTPAuth = true; // turn on SMTP authentication
$Email->Port = 587;
$Email->Host = "smtp";
$Email->Username = "site@";
$Email->Password = "senha";$Email->Mailer = "smtp";
$Email->SetLanguage("br");$amount=6; //amount shows the number of data I want to repeat
for( $i = 0; $i < $amount; $i++ ) {
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
</head>
<body bgcolor='#ffffff'>
<table width='100%' border='0' cellspacing='0' cellpadding='5'>
<tr>
<td height='50' colspan='3' bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='3' color='#8f211e'><img src='http://www.super.com.br/img/logo-topo.png'></font></td>
</tr>
<tr>
<td colspan='3'> </td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Nome: $nome</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>E-mail: $email </font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $telefone</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $celular</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Endereço de entrega: $endereco</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Horário de entrega: $horario</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Forma de pagamento: $pagamento</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Cartão Coperclube: $cartao</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>CPF: cpf</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Data: $data</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>IP: $ip</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Navegador: $navegador</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Hora: $hora</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'> </td>
</tr>
<tr>
<td width='43%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Produto/Descrição</font></td>
<td width='28%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Marca</font></td>
<td width='29%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Quantidade</font></td>
</tr>
<tr>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>'.$produto[$i].'</font></td>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>'.$marca[$i].'</font></td>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>'.$quantidade[$i].'</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'> </td>
</tr>
<tr>
<td colspan='3' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>www.super.com.br</font></td>
</tr>
</table>
</body>
</html>
}if(!$Email->Send()) {
echo "<h2>A mensagem nao foi enviada. </h2><p><br>";
echo "Erro: " . $Email->ErrorInfo;
}else{
echo "
<META HTTP-EQUIV=REFRESH CONTENT='0; URL=../obrigado.php'>
";
}
}
?>Fabio, obrigado ja havia visto na documentação do php e entendi como fazer, agora tem uma coisa que não estou entendendo como fazer, pois eu consegui recuperar os dados array, mais só consigo recuperar os primeiros campos dinâmicos, fiz dessa forma. Agora minha dúvida é como fazer um while dentro do
$Email->Body para recuperar todos os dados da tabela abaixo:
<tr>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$produto[$i]</font></td>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$marca[$i]</font></td>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$quantidade[$i]</font></td>
</tr>
<?php
// chamada da classe phpmailer
require_once('mailer/class.phpmailer.php');
require_once('mailer/class.smtp.php');
// resgatando os dados passados pelo form
if ($_POST){
$assunto = "Compras Online";
$nome=$_POST["nome"];
$email=$_POST["email"];
$telefone=$_POST["telefone"];
$celular=$_POST["celular"];
$endereco=$_POST["endereco"];
$horario=$_POST["horario"];
$pagamento=$_POST["pagamento"];
$cpf=$_POST["cpf"];
$produto=$_POST["produto"];
$marca=$_POST["marca"];
$quantidade=$_POST["quantidade"];
$cartao=$_POST["cartao"];
$cpf=$_POST["cpf"];$ip = $_SERVER['REMOTE_ADDR']; //hidden
$navegador = $_SERVER['HTTP_USER_AGENT']; //hidden
// exibindo os dados
for ($i=0; $i<$quant_linhas; $i++) {
echo "Produto: ".$produto[$i]."<br />";
echo "Marca: ".$marca[$i]."<br />";
echo "Quantidade: ".$quantidade[$i]."<br />";
}
// chamada da classe
$Email = new PHPMailer();
$Email->IsSMTP(); // set mailer to use SMTP
$Email->SMTPAuth = true; // turn on SMTP authentication
$Email->Port = 587;
$Email->Host = "";
$Email->Username = "";
$Email->Password = "";$Email->Mailer = "smtp";
$Email->SetLanguage("br");<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
</head>
<body bgcolor='#ffffff'>
<table width='100%' border='0' cellspacing='0' cellpadding='5'>
<tr>
<td height='50' colspan='3' bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='3' color='#8f211e'></font></td>
</tr>
<tr>
<td colspan='3'> </td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Nome: $nome</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>E-mail: $email </font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $telefone</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $celular</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Endereço de entrega: $endereco</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Horário de entrega: $horario</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Forma de pagamento: $pagamento</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Cartão Coperclube: $cartao</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>CPF: cpf</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Data: $data</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>IP: $ip</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Navegador: $navegador</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Hora: $hora</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'> </td>
</tr>
<tr>
<td width='43%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Produto/Descrição</font></td>
<td width='28%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Marca</font></td>
<td width='29%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Quantidade</font></td>
</tr>
<tr>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$produto[$i]</font></td>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$marca[$i]</font></td>
<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$quantidade[$i]</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'> </td>
</tr>
<tr>
<td colspan='3' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'></font></td>
</tr>
</table>
</body>
</html>
";
if(!$Email->Send()) {
echo "<h2>A mensagem nao foi enviada. </h2><p><br>";
echo "Erro: " . $Email->ErrorInfo;
}else{
echo "
<META HTTP-EQUIV=REFRESH CONTENT='0; URL=../obrigado.php'>
";
}
}
?>Obrigado pela ajuda, problema resolvido, bem simples.
for ($i=0; $i<$quant_linhas; $i++) {
$Email->Body .= "<tr>";
$Email->Body .= "<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$produto[$i]</font></td>";
$Email->Body .= "<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$marca[$i]</font></td>";
$Email->Body .= "<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$quantidade[$i]</font></td>";
$Email->Body .= "</tr>";
}
Obrigado Fábio, só uma coisa que eu não entendi como implementar isso no meu código de envio dos dados.