У меня есть веб-сайт электронной коммерции, на котором я хочу, чтобы товары из корзины покупок отправлялись по почте, чтобы можно было завершить заказ.У меня есть сеанс корзины покупок на странице оформления заказа, и как только нажимается кнопка размещения заказа, он переходит на другую страницу, где выполняется процесс php.У меня нет ошибок, но он отправляет на почту только последний товар в корзине, а не все товары в корзине.Ниже приведен код, который я использовал для переноса товаров на страницу оформления заказа
<?php
session_start();
?>
<?php
$product_ids = array();
if(isset($_POST['checkout'])){
if(isset($_SESSION['shopping_cart'])){
$count = count($_SESSION['shopping_cart']);
$product_ids = array_column($_SESSION['shopping_cart'], 'id');
if (!in_array(filter_input(INPUT_GET, 'id'), $product_ids)){
$_SESSION['shopping_cart'][$count] = array
(
'id' => filter_input(INPUT_GET, 'id'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'qty' => filter_input(INPUT_POST, 'qty'),
'img' => filter_input(INPUT_POST, 'img'),
);
echo "Product Added to cart";
}else{
echo "Product Already added to cart";
}
}else{
$_SESSION['shopping_cart'][0] = array
(
'id' => filter_input(INPUT_GET, 'id'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'qty' => filter_input(INPUT_POST, 'qty'),
'img' => filter_input(INPUT_POST, 'img'),
);
}
}
?>
Ниже приведен код для получения каждого товара из сеанса
<?php
$total =0;
foreach($_SESSION['shopping_cart'] as $key => $r):
?>
<?php
$prodname = $r['name'];
$prodprice = $r['price'];
$prodqty = $r['qty'];
?>
<?php
$total = ($r['qty'] * $r['price']);
?>
<?php
endforeach;
?>
<?php
$totalall=0;
foreach($_SESSION['shopping_cart'] as $key => $r):
$totalall = $totalall + ($r['qty'] * $r['price']);
?>
<?php
endforeach;
?>
Вот код, которыйотправить товар на почту
<?php
include('Mail.php');
$username = 'username';
$password = 'password';
$from = "";
$to = "";
$subject = "$subject";
$body= "
$prodname;
$prodprice;
$prodqty;
$prodtotal;
";
$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject);
$smtp = Mail::factory('smtp', array ('host' =>'localhost', 'auth' => true,
'username' => $username, 'password' => $password, 'port' => '25'));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)){
echo("<p>" . $mail->getMessage() . "</p>");
}
else {
echo("Order Completed Successfully");
}
?>
Я не против изменить свой код, мне просто нужно, чтобы это работало.Спасибо