У меня есть корзина покупок PhP, и мне нужно захватить все выбранные продукты и отправить их на мою электронную почту вместе с контактной формой после нажатия «Отправить» - PullRequest
0 голосов
/ 26 мая 2019

У меня есть корзина PhP для автозапчастей, и мне нужно захватить все выбранные продукты и отправить их на мою электронную почту вместе с контактной формой после нажатия «Отправить заказ».На данный момент мне удалось отправить только первый выбранный продукт, но мне нужно захватить все выбранные продукты, а не только один.

Я попытался захватить сам массив со всеми атрибутами выбранных продуктов, но он отправляетя только первый выбранный продукт.

PhP

<?php

if(!empty($_GET["action"])) {
switch($_GET["action"]) {
    case "add":
        if(!empty($_POST["quantity"])) {
            $productByCode = $db_handle->runQuery("SELECT * FROM mystuff WHERE mscode='" . $_GET["mscode"] . "'");
        $itemArray = array($productByCode[0]["mscode"]=>array('mscategory'=>$productByCode[0]["mscategory"], 'mscatnum'=>$productByCode[0]["mscatnum"], 'msnomer'=>$productByCode[0]["msnomer"], 'msmark'=>$productByCode[0]["msmark"], 'msmodel'=>$productByCode[0]["msmodel"], 'msyear'=>$productByCode[0]["msyear"],'mscode'=>$productByCode[0]["mscode"], 'quantity'=>$_POST["quantity"], 'msprice'=>$productByCode[0]["msprice"], 'msimage'=>$productByCode[0]["msimage"]));

            if(!empty($_SESSION["cart_item"])) {
                if(in_array($productByCode[0]["mscode"],array_keys($_SESSION["cart_item"]))) {
                    foreach($_SESSION["cart_item"] as $k => $v) {
                            if($productByCode[0]["mscode"] == $k) {
                                if(empty($_SESSION["cart_item"][$k]["quantity"])) {
                                    $_SESSION["cart_item"][$k]["quantity"] = 0;
                                }
                                $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"];
                            }
                    }
                } else {
                    $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
                }
            } else {
                $_SESSION["cart_item"] = $itemArray;
            }
        }
    break;

    case "empty":
        unset($_SESSION["cart_item"]);
    break;  
}
}
?>

HTML

<HTML>
<HEAD>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
</HEAD>

<div class="bodyr">

<div id="shopping-cart">
<div class="txt-heading"></div>

<?php
if(isset($_SESSION["cart_item"])){
    $total_quantity = 0;
    $total_price = 0;
?>  
<table class="tbl-cart" cellpadding="10" cellspacing="1">
<tbody>
<tr>
<th style="text-align:left;" width="2%">Category</th>
<th style="text-align:left;" width="2%">Category №:</th>
<th style="text-align:left;" width="2%">Stock №:</th>   
<th style="text-align:left;" width="2%">Mark:</th>
<th style="text-align:left;" width="2%">Model:</th>
<th style="text-align:left;" width="2%">Year:</th>
<th style="text-align:left;" width="2%">Quantity:</th>
<th style="text-align:left;" width="2%">Price:</th>
<th style="text-align:left;" width="2%">Total price:</th>
</tr>       
<?php       
    foreach ($_SESSION["cart_item"] as $item){
        $item_price = $item["quantity"]*$item["msprice"];
        ?>
                <tr>
                <td><?php echo $item["mscategory"]; ?></td>
                <td><?php echo $item["mscatnum"]; ?></td>
                <td><?php echo $item["msnomer"]; ?></td>    
                <td><?php echo $item["msmark"]; ?></td>
                <td><?php echo $item["msmodel"]; ?></td>
                <td><?php echo $item["msyear"]; ?></td> 
                <td style="text-align:left;"><?php echo $item["quantity"]; ?></td>
                <td style="text-align:left;"><?php echo "$ ".$item["msprice"]; ?></td>
                <td style="text-align:left;"><?php echo "$ ". number_format($item_price,2); ?></td>
                </tr>
                <?php
                $total_quantity += $item["quantity"];
                $total_price += ($item["msprice"]*$item["quantity"]);
        }
        ?>

<tr>
<td colspan="7" align="left"> <div style="font-weight:bold; font-size:14px"> Total:</div></td>
<td align="left"><?php echo $total_quantity; ?></td>
<td align="right" colspan="2"><strong><?php echo "$ ".number_format($total_price, 2); ?></strong></td>
</tr>
</tbody>
</table>        
  <?php
} else {
?>
<div class="no-records">Your cart is empty</div>
<?php 
}
?>
</div>

<form action="" method="post">
        <input type="text" name="namet" placeholder="Name: *" required>
        <input type="tel" name="adrphonenumbert" placeholder="Phone number: *" required>
        <input type="email" name="emailt" placeholder="E-mail: *" required>
</form>

</html>

PhP Mail () функция

<?php

    $response = '';
    $subject = 'Autoparts';
if (isset($_POST['namet'], $_POST['phonenumbert'], $_POST['emailt'] )) {

    if (!filter_var($_POST['emailt'], FILTER_VALIDATE_EMAIL)) {
        $response = 'The e-meil address is not valid!';
    } else if (empty($_POST['namet']) || empty($_POST['phonenumbert']) || empty($_POST['emailt'])) {
        $response = 'Please, fill all the fields.';
    } else {

        $namet = $_POST['namet'];
        $phonenumbert = $_POST['phonenumbert'];
        $emailt= $_POST['emailt'];

        $to = 'LLstdz@gmail.com';

         foreach ($_SESSION["cart_item"] as $itemArray){
        if ($itemArray > 0){
        $txt = '<h2>Autoparts purchase:</h2>
                    <p><b>Name:</b> '.$namet.'</p>
                    <p><b>Phone number:</b> '.$phonenumbert.'</p>
                    <p><b>E-meil:</b> '.$emailt.'</p>

                    <p><b>Category:</b><br/>'.$itemArray["mscategory"].'</p>;
                    <p><b>Category №:</b><br/>'.$itemArray["mscatnum"].'</p>;
                    <p><b>Stock №:</b><br/>'.$itemArray["msnomer"].'</p>;
                    <p><b>Mark:</b><br/>'.$itemArray["msmark"].'</p>;
                    <p><b>Model:</b><br/>'.$itemArray["msmodel"].'</p>;
                    <p><b>Year:</b><br/>'.$itemArray["msyear"].'</p>;
                    <p><b>Quantity:</b><br/>'.$itemArray["quantity"].'</p>;
                    <p><b>Price:</b><br/>'.$itemArray["msprice"].'</p>';

         };
         }

        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

        mail($to, $subject, $txt, $headers);
        echo '<div style="font-weight:bold;font-size:20px;text-align:center">Thank you for using our services.</div>'   ;
    }
}


?>

1 Ответ

0 голосов
/ 26 мая 2019

Это потому, что вы должны объединить строку $txt, поэтому используйте .= вместо =

В то время, когда вы отправляете только последний элемент в $_SESSION["cart_item"] (не первый)

для вашего случая:

 $txt = '';

 foreach ($_SESSION["cart_item"] as $itemArray){
    if ($itemArray > 0){
    $txt .= '<h2>Autoparts purchase:</h2>
                <p><b>Name:</b> '.$namet.'</p>
                <p><b>Phone number:</b> '.$phonenumbert.'</p>
                <p><b>E-meil:</b> '.$emailt.'</p>

                <p><b>Category:</b><br/>'.$itemArray["mscategory"].'</p>;
                <p><b>Category №:</b><br/>'.$itemArray["mscatnum"].'</p>;
                <p><b>Stock №:</b><br/>'.$itemArray["msnomer"].'</p>;
                <p><b>Mark:</b><br/>'.$itemArray["msmark"].'</p>;
                <p><b>Model:</b><br/>'.$itemArray["msmodel"].'</p>;
                <p><b>Year:</b><br/>'.$itemArray["msyear"].'</p>;
                <p><b>Quantity:</b><br/>'.$itemArray["quantity"].'</p>;
                <p><b>Price:</b><br/>'.$itemArray["msprice"].'</p>';

     };
     }

Кстати, я настоятельно рекомендую использовать phpmailer (https://github.com/PHPMailer/PHPMailer) или swiftmail для отправки электронной почты.

...