Search code examples
phpphpmailercart

How to append 2 pieces of PHP code, when sending an array of data?


I have sessions variables, in which are stored cart data, and I want to send those via email. This is the loop to write all cart data.

foreach($_SESSION["shopping_cart"] as $keys => $values)
            {
          ?>
          <tr>
            <td><?php echo $values["item_name"]; ?></td>
            <td><?php echo $values["item_quantity"]; ?></td>
            <td>€ <?php echo $values["item_price"]; ?></td>
            <td>€ <?php echo number_format($values["item_quantity"] * $values["item_price"], 2);?></td>
            <td><a href="cart.php?action=delete&id=<?php echo $values["item_id"]; ?>"><span class="text-danger">Vymazať</span></a></td>
          </tr>
          <?php
              $total = $total + ($values["item_quantity"] * $values["item_price"]);
            }

This is my code to send email and I want to put in there the cart data...

require 'phpmailer/PHPMailerAutoload.php';
                    $mail = new PHPMailer(true);

                    $mail->CharSet = 'UTF-8';
                    $mail->Host='smtp.gmail.com';
                    $mail->Port=995;
                    $mail->SMTPAuth=true;
                    $mail->SMTPSecure='ssl';
                    $mail->Username='deelakeObjednavky@gmail.com';
                    $mail->Password='password';

                    $mail->setFrom($_POST['email'],"Deelake - objednávka");
                    $mail->addAddress('deelakeObjednavky@gmail.com');
                    $mail->addReplyTo($_POST['email'],$_POST['meno']);

                    $mail->isHTML(true);
                    $mail->Subject = 'Vyplnený kontaktný formulár:Objednávka';
                    $mail->Body='<h1 align=center>New ORDER </h1>';

                    if (!$mail->send()) {
                        $result="Email error.";
                    }
                    else{
                        $result="Email success.";
                    }

Solution

  • You can use the following for the $mail->Body part:

    $mail->Body = '<h1 align=center>New ORDER </h1>';
    $mail->Body .= '<table>';
    
    $total = 0;
    
    foreach ($_SESSION["shopping_cart"] as $keys => $values) {
        $mail->Body .= "<tr>
            <td>" . $values["item_name"] . "</td>
            <td>" . $values["item_quantity"] . "</td>
            <td>&euro;" . $values["item_price"] . "</td>
            <td>&euro;" . number_format($values["item_quantity"] * $values["item_price"], 2) . "</td>
            <td><a href=\"cart.php?action=delete&id=" . $values["item_id"] . "><span class=\"text-danger\">Vymazať</span></a></td>
        </tr>";
        $total = $total + ($values["item_quantity"] * $values["item_price"]);
    }
    
    $mail->Body .= '</table>';
    $mail->Body .= "Total: &euro;" . $total;
    
    if (!$mail->send()) {
        $result = "Email error.";
    } else {
        $result = "Email success.";
    }