Перейти к содержанию
Alex522

Отправка содержимого $products на почту через mail.php

Рекомендуемые сообщения

День добрый! Есть задача, чтобы все содержимое корзины, а именно название товара ($product['name'];), кол-во ($product['quantity'];), отсылалось на почту через форму mail.php, в обход стандартной процедуры заказа.

Всё работает, НО отправляется только 1 товар, т. е. если в корзине его > 1 то на почту в заказе из содержимого ($products) отправляется только последний.

Каким способом выполнять проверку в корзине, либо массив c $products отправить на почту ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
36 минут назад, Alex522 сказал:

Всё работает, НО отправляется только 1 товар, т. е. если в корзине его > 1 то на почту в заказе из содержимого ($products) отправляется только последний.

код формирования сообщения, ускорит помощь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
32 минуты назад, fanatic сказал:

код формирования сообщения, ускорит помощь

 

Там похоже ошибка вида $message = '...', вместо $message += '...'

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Форма:
 

<form action="/catalog/view/theme/orangex/send.php" method="post" enctype="multipart/form-data">
  <input type="hidden" name="product" value="<?php echo $product['name']; ?>">
  <input type="hidden" name="quantity" value="<?php echo $product['quantity']; ?>">
  <input type="hidden" name="model" value="<?php echo $product['model']; ?>">
  <input class="form-input" type="text" name="username" placeholder="Ваше имя" required>
  <input class="form-input" type="text" name="phone" placeholder="Введите ваш телефон" required>
  <input class="form-input" type="text" name="adress" placeholder="Введите адрес доставки" required>
  <input class="form-input" type="text" style="height:65px;" name="comment" placeholder="Комментарий к заказу">
  <button class="btn btn-primary-n" onclick="$('#cart').load('index.php?route=checkout/cart&remove_all'); window.location.assign('index.php?route=checkout/cart&remove_all');">Оформить заказ</button>
</form>

 

 

send.php

<?
$name=$_POST['username'];
$product=$_POST['product'];
$model=$_POST['model'];
$kolvo=$_POST['quantity'];
$phone=$_POST['phone'];
$adress=$_POST['adress'];
$comment=$_POST['comment'];
$headers=$_POST['headers'];
$toMail = '***@gmail.com';
$headers  = "From: $name <$product> \n";

mail ("$toMail", "$product", 
"\nИмя : $name
\nПродукт : $product, категория : $model - Количество: $kolvo;
\nАдрес: $adress;
\nТелефон: $phone;
\nКомментарий: $comment\n\n", "$headers");

?>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
54 минуты назад, Alex522 сказал:

$name=$_POST['username']; $product=$_POST['product']; $model=$_POST['model'];

что присвоили, то и отправляет.


<input type="hidden" name="products[<?php echo $product['product_id']; ?>][name]" value="<?php echo $product['name']; ?>">
<input type="hidden" name="products[<?php echo $product['product_id']; ?>][quantity]" value="<?php echo $product['quantity']; ?>">
<input type="hidden" name="products[<?php echo $product['product_id']; ?>][model]" value="<?php echo $product['model']; ?>">

<?php
$html = '<table>';
$html .= '<thead>';
$html .= '<tr>';
$html .= '<th>Наименование</th>';
$html .= '<th>Модель</th>';
$html .= '<th>Количество</th>';
$html .= '<tr>';
$html .= '</thead>';
$html .= '<tbody>';

foreach ($this->request->post['products'] as $product) {
    $html .= '<tr>';
    $html .= '<td>' . $product['name'] . '</td>';
    $html .= '<td>' . $product['model'] . '</td>';
    $html .= '<td>' . $product['quantity'] . '</td>';
    $html .= '</tr>';
}

$html .= '</tbody>';
$html .= '</table>';

$subject = 'subject';
$email = '****@gmail.com';

$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($email);
$mail->setFrom($this->config->get('config_email'));
$mail->setSender($email);
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
$mail->setHtml($html);
$mail->send();
?>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сообщение не приходит на почту, далее смотрю в исходном коде:


<input type="hidden" name="products[<b>Notice</b>: Undefined index: product_id in <b>/home/n/***/***/public_html/catalog/view/theme/default/template/checkout/cart.tpl</b> on line <b>114</b>][name]" value="iPhone 6 128Gb Gold (MG4E2RU/A)">
<input type="hidden" name="products[<b>Notice</b>: Undefined index: product_id in <b>/home/n/***/***/public_html/catalog/view/theme/default/template/checkout/cart.tpl</b> on line <b>115</b>][quantity]" value="1">
<input type="hidden" name="products[<b>Notice</b>: Undefined index: product_id in <b>/home/n/***/***/public_html/catalog/view/theme/default/template/checkout/cart.tpl</b> on line <b>116</b>][model]" value="iPhone 6">

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, Alex522 сказал:

<? $name=$_POST['username']; $product=$_POST['product']; $model=$_POST['model']; $kolvo=$_POST['quantity']; $phone=$_POST['phone']; $adress=$_POST['adress']; $comment=$_POST['comment']; $headers=$_POST['headers']; $toMail = '***@gmail.com'; $headers = "From: $name <$product> \n";

 

бросьте программирование и никогда больше этим не занимайтесь, то что вы делаете это варварство

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 minutes ago, spectre said:

 

бросьте программирование и никогда больше этим не занимайтесь, то что вы делаете это варварство

Вы зашли чтобы потратить свое время и оставить свой пустой отзыв? Так вас никто и не спрашивал. Не вижу смысла с вами спорить и тратить свое время

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Alex522 сказал:

Вы зашли чтобы потратить свое время и оставить свой пустой отзыв? Так вас никто и не спрашивал. Не вижу смысла с вами спорить и тратить свое время

а я с вами не спорю, я вам говорю что из-за вашей рукожопости могут пострадать люди и лучше этим не заниматься, от греха подальше

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 minutes ago, spectre said:

а я с вами не спорю, я вам говорю что из-за вашей рукожопости могут пострадать люди и лучше этим не заниматься, от греха подальше

Было бы лучше, если бы вы потерялись с топика

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Alex522 сказал:

Было бы лучше, если бы вы потерялись с топика

Я думаю что хамить малознакомым людям из-за монитора это плохая идея, я может немного груб, но то что вы делаете это действительно варварство, вы б хоть посмотрели как заказ отправляется, там все это есть

а без проверки переменных POST заказчику которому вы пилите эту мегафичу зальют парочку шеллов и вас вывезут в лес за профнепригодность, я примерно это хотел сказать

перед тем как просить помощи нужно попытаться сделать самому, да и вам больше пользы, научитесь

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Alex522 сказал:

Сообщение не приходит на почту, далее смотрю в исходном коде:

а вы думали я дал рабочий код, только скопировал и вставил?

я показал пример,  как вывести в форме несколько товаров и потом собрать данные 

а у вас что?

5 часов назад, Alex522 сказал:

<input type="hidden" name="product" value="<?php echo $product['name']; ?>">

а следующий товар, тоже с name="product".?

ну а за это

5 часов назад, Alex522 сказал:

$name=$_POST['username']; $product=$_POST['product'];

вам уже все правильно рассказал@spectre

совет.  прежде чем лезть в движок подтяните html. php.  тогда отпадет множество вопросов.

и зачем это

5 часов назад, Alex522 сказал:

mail ("$toMail", "$product", "\nИмя : $name \nПродукт : $product, категория : $model - Количество: $kolvo; \nАдрес: $adress; \nТелефон: $phone; \nКомментарий: $comment\n\n", "$headers");

в движке есть инструменты для отправки сообщений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Alex522 сказал:

свое время и оставить свой пустой отзыв?

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

а вы, как я понял, ждете готовый код.  тогда в другой радел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Alex522 сказал:

Undefined index: product_id

неопределенный индекс.

я просто  предположил, если у вас есть $product['name'],  то должен быть     $product['product_id']

мне отсюда не видно? что та у вас в  массиве  $product

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.