Only send a product inside the email

Asked

Viewed 56 times

0

I insert in 3 different tables and when the checkbox nay is different from empty send an email to the responsible. Everything is working correctly. I will show the code:

$Carro = $_POST['Carro'];

for ($i=0;$i<count($_POST["Carro"]);$i++) { 
$car = $_POST['Carro'][$i];
$selecionado = $_POST['Selecionado'][$i];  

if( $selecionado != ""){

$selecionado = $selecionado == "on" ? "X" : "";
 $stmt = $conn->prepare("INSERT INTO Registolistagem (Carro, Selecionado) VALUES ('$car', '$selecionado')");
    mysqli_stmt_execute($stmt); 
    $last_id = $conn->insert_id;

}
}

$colaborador = $_POST['Colaborador'];
for ($i=0;$i<count($_POST["Colaborador"]);$i++) { 
$col = $_POST['Colaborador'][$i];
$stmt2 = $conn->prepare("INSERT INTO Registolistagem2 (IdLista, Colaborador, Data) VALUES ('$last_id', '$col', '".date('Y-m-d\TH:i:s')."')");
 mysqli_stmt_execute($stmt2); 

}

$Produto = $_POST['Produto'];

for ($i=0;$i<count($_POST["Produto"]);$i++) { 
$prod = $_POST['Produto'][$i];
$sim = $_POST['Sim'][$i]; 
$nao = $_POST['Nao'][$i]; 
$obsevacao = $_POST['Observacao'][$i];  


 $stmt1 = $conn->prepare("INSERT INTO Registolistagem1 (IdList, Produto, Sim, Obsevacao) VALUES ('$last_id', '$prod', '$sim', '$obsevacao')");
    mysqli_stmt_execute($stmt1);

if($sim != "Sim"){

require ("phpmailer/class.phpmailer.php");
require ("phpmailer/class.smtp.php");

# Inicia a classe PHPMailer
$mail = new PHPMailer();

# Define os dados do servidor e tipo de conexão
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->CharSet = 'utf-8';
$mail->Host = "smtp.gmail.com"; # Endereço do servidor SMTP, na WebHS basta usar localhost caso a conta de email esteja na mesma máquina de onde esta a correr este código, caso contrário altere para o seu desejado ex: mail.nomedoseudominio.pt
$mail->Port = 587; // Porta TCP para a conexão
$mail->SMTPSecure = 'tls';
$mail->SMTPAutoTLS = false; // Utiliza TLS Automaticamente se disponível
$mail->SMTPAuth = true; # Usar autenticação SMTP - Sim
$mail->Username = '[email protected]'; # Login de e-mail
$mail->Password = 'xxxxxx'; // # Password do e-mail
# Define o remetente (você)
$mail->From = "[email protected]"; # Seu e-mail
$mail->FromName = "Colaborador"; // Seu nome
# Define os destinatário(s)
$mail->AddAddress('[email protected]', 'xxxxxxxx
#$mail->AddAddress('[email protected]'); # Caso queira receber uma copia
$mail->AddCC('[email protected]', 'xxxxxxx'); # Copia
#$mail->AddBCC('[email protected]', 'Pessoa Nome 3'); # Cópia Oculta
# Define os dados técnicos da Mensagem
$mail->IsHTML(true); # Define que o e-mail será enviado como HTML
#$mail->CharSet = 'iso-8859-1'; # Charset da mensagem (opcional)
# Define a mensagem (Texto e Assunto)
$mail->Subject = "Organização de Carross"; # Assunto da mensagem
$mail->Body = "Informo que está em falta um ou mais produtos na organização do carro.
<html>
                        <head>
                        </head>
                        <body>
                        <h2>Registo de Organização dos Carros</h2>


                          <tr>
                            <th>Colaborador: ".$col."</th><p></br>
                            <th>Produto: ".$prod."</th><p></br>
                            <th>Observação: ".$obsevacao."</th><p></br>
                            <th>Data: '".date('Y-m-d\TH:i:s')."'</th><p></br>
                          </tr>

                        </body>
                        </html>";
$mail->AltBody = "Este é o corpo da mensagem de teste, somente Texto! \r\n :)";

# Define os anexos (opcional)
#$mail->AddAttachment("c:/temp/documento.pdf", "documento.pdf"); # Insere um anexo
# Envia o e-mail
$enviado = $mail->Send(); 
# Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
$mail->ClearAttachments();
}       
}

The only problem I have is that when I have more than one product with value in the checkbox nay only sends the first product to receive value and intended to send in the email all products that received value at checkbox nay

  • Just in advance, this email body is poorly formed, you are putting a text before HTML.

  • @Sam, okay, can you help fix it? I understand my problem?

  • 1

    I think the require should stay before the for.

  • @Sam, you couldn’t see a solution?

  • Take a look at what I said You’re making require loop.

  • @Sam, that was the problem.

  • @Sam is possible to chat?

  • At the moment I can’t.

Show 3 more comments

1 answer

0

In my opinion, I think you should make a query and create a loop where the information goes to the customer, so you would take all the products of the particular customer with the check nay marked.

  • yes that is a possibility, but that loop has to be done at the time of registration, because I want to only send products with check nay at the time of registration and not those in the database table, I made myself understood?

  • Yes, I got it, right after this condition if($not != ""){ make your query taking the fields of the tables you want, and in the email make the loop to put the products. I think that solves.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.