Состыковать две формы отправки сообщений

есть такой вопрос: хочу прикрутить корзину к мультиселлер магазинчику и нужно чтобы она отправляла заказ на емейл хозяина товара взятый из БД, а корзина отправляет на прописанный в ней вручную адрес. Вот такой код, отправляет сообщение владельцу товара:

include '../include/config.php';
// Get seller email
$sqlSeller = "SELECT email FROM users WHERE id=" . $_REQUEST['sid'];

try{
    $query = $db->query($sqlSeller);

    $query->setFetchMode(PDO::FETCH_ASSOC);

    $row = $query->fetch();

    $to = $row['email'];

    }
    catch(PDOException $e) {
        die($e->getMessage());
    }

// Send email
$from = $_REQUEST['email'];
$subject = $_REQUEST['mtitle'];
$msg = $_REQUEST['msg'];
$header = "From: " . $_REQUEST['email'] . "\r\n";
mail($to, $subject, $msg, $header);


// Go to product edit page
$myUrl = "Location: ../product.php?id=" . $_REQUEST['pid'];
header($myUrl);

А это тот в котором нужно сделать отправку. Пытаюсь объединить вот так:

    <?php
parse_str($_POST['orderlist'], $orderlist);
parse_str($_POST['userdata'], $userdata);
/*
$orderlist - массив со списком заказа
$userdata - данные заказчика
*/

Вместо вот этого. Начало

    // ваш Email
$admin_mail = '[email protected]';
// Email заказчика (как fallback - ваш же Email)
$to = !empty($userdata['user_mail']) ? $userdata['user_mail'] : $admin_mail;

Конец

Вставляю выборку из БД из первого кода. Начало

$dbh = new \PDO('mysql:host=localhost;dbname=mschop', 'root', '');
$sqlSel = "SELECT email FROM users WHERE id=" . $_REQUEST['sid'];

try{
    $querySel = $db->query($sqlSel);

    $querySel->setFetchMode(PDO::FETCH_ASSOC);

    $rowSel = $querySel->fetch();

    }
    catch(PDOException $e) {
        die($e->getMessage());
    }
  $admin_mail = $rowSel['email'];
// Email заказчика (как fallback - ваш же Email)
$to = !empty($userdata['user_mail']) ? $userdata['user_mail'] : $admin_mail;

Конец

// Заголовок письма
$subject = 'Заказ от '.date('d.m.Y').'г.';

// Формируем таблицу с заказанными товарами
$tbl = '<table style="width: 100%; border-collapse: collapse;">
    <tr>
        <th style="width: 1%; border: 1px solid #333333; padding: 5px;">ID</th>
        <th style="width: 1%; border: 1px solid #333333; padding: 5px;"></th>
        <th style="border: 1px solid #333333; padding: 5px;">Наименование</th>
        <th style="border: 1px solid #333333; padding: 5px;">Цена</th>
        <th style="border: 1px solid #333333; padding: 5px;">Кол-во</th>
    </tr>';
$total_sum = 0;
foreach($orderlist as $id => $item_data) {
    $total_sum += (float)$item_data['count'] * (float)$item_data['price'];
    $tbl .= '
    <tr>
        <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['id'].'</td>
        <td style="border: 1px solid #333333;"><img src="'.$item_data['img'].'" alt="" style="max-width: 64px; max-height: 64px;"></td>
        <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['title'].'</td>
        <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['price'].'</td>
        <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['count'].'</td>
    </tr>';
}
$tbl .= '<tr>
        <td  style="border: 1px solid #333333; padding: 5px;" colspan="3">Итого:</td>
        <td style="border: 1px solid #333333; padding: 5px;"><b>'.$total_sum.'</b></td>
        <td style="border: 1px solid #333333;">&nbsp;</td>
    </tr>
</table>';
// Тело письма
$body = '
<html>
<head>
  <title>'.$subject.'</title>
</head>
<body>
  <p>Информация о заказчике:</p>
    <ul>
        <li><b>Ф.И.О.:</b> '.$userdata['user_name'].'</li>
        <li><b>Тел.:</b> '.$userdata['user_phone'].'</li>
        <li><b>Email:</b> '.$userdata['user_mail'].'</li>
        <li><b>Адрес:</b> '.$userdata['user_address'].'</li>
        <li><b>Комментарий:</b> '.$userdata['user_comment'].'</li>
    </ul>
    <p>Информация о заказае:</p>
  '.$tbl.'
    <p>Письмо создано автоматически. Пожалуйста, не отвечайте на него, т.к. все ушли на пляж!</p>
</body>
</html>';

// Заголовки
$headers   = []; // или $headers = array() для версии ниже 5.4
$headers[] = 'MIME-Version: 1.0'; // Обязательный заголовок
$headers[] = 'Content-type: text/html; charset=utf-8'; // Обязательный заголовок. Кодировку изменить при необходимости
$headers[] = 'From: Best Shop <[email protected]>'; // От кого
$headers[] = 'Bcc: Admin <'.$admin_mail.'>'; // скрытая копия админу сайта, т.е. вам
$headers[] = 'X-Mailer: PHP/'.phpversion();
// Отправка
$send_ok = mail($to, $subject, $body, implode("\r\n", $headers));

// Ответ на запрос
$response = [
    'errors' => !$send_ok,
    'message' => $send_ok ? 'Заказ принят в обработку!' : 'Хьюстон! У нас проблемы!'
];
// ! Для версий PHP < 5.4 использовать традиционный синтаксис инициализации массивов:
/*
$response = array (
    'errors' => !$send_ok,
    'message' => $send_ok ? 'Заказ принят в обработку!' : 'Хьюстон! У нас проблемы!'
);
*/
exit( json_encode($response) );

Но ничего не выходит.Письмо не отправляется. Может подскажете в чем не состыковка и как исправить?


Ответы (2 шт):

Автор решения: Borislav

Очень подозрительно выглядит данная строка, что у вас там в $_POST['userdata'] лежит такое parse_str($_POST['userdata'], $userdata);?

var_dump ($_POST['userdata']);
var_dump ($userdata['user_mail']);
var_dump ($to);

Если предыдущие варианты не дадут результатов. var_dump ($row);


Ну и естественно мы надеемся, что сервер настроен под smtp.

→ Ссылка
Автор решения: BorBos

В целом разобрался. Все работает кроме главного - не срабатывает подстановка получателя . $_REQUEST['sid'] Как же его подставить?

→ Ссылка