Помогите передать в массив данные о товаре

grebovich

Гуру форума
Регистрация
19 Мар 2012
Сообщения
363
Реакции
81
Всем привет.
Парни прошу помощи, уже вторые сутки пошли, мозг плавится....
Принимаю заказы с лейдинга которые отправляются на почту, но я настраиваю чтобы паралельно писались они в гугл таблицу, есть код обработчика такой:
Код:
<?
// mb_internal_encoding("UTF-8");
// ini_set('error_reporting', E_ALL);
// ini_set('display_errors', 1);
// ini_set('display_startup_errors', 1);
use PHPMailer\PHPMailer\PHPMailer;
require_once($_SERVER['DOCUMENT_ROOT'] . '/smartbasket/php/config.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (isset($_POST['userName']) ) {
            if(empty($_POST['userName'])) {
                echo 'notName';
            } else {
                $name = "<b>Имя: </b>" . strip_tags($_POST['userName']) . "; ";
            }
        }
        if (isset($_POST['userTel']) ) {
            if(empty($_POST['userTel'])) {
                echo 'notTel';
            } else {
                $tel = "<b>Телефон: </b>" . strip_tags($_POST['userTel']) . "<br>";
            }
        }

        if (isset($_POST['userEmail']) ) {
            if(empty($_POST['userEmail'])) {
                echo 'notEmail';
            } else {
                $email = "<b>Email: </b>" . strip_tags($_POST['userEmail']) . "<br>";
            }
        }
        if (isset($_POST['userCity']) ) {
            if(empty($_POST['userCity'])) {
                echo 'notCity';
            } else {
                $city = "<b>Адрес доставки: </b>" . strip_tags($_POST['userCity']) . "; ";
            }
        }
        if (isset($_POST['userKomments']) ) {
            if(empty($_POST['userKomments'])) {
                echo 'notKomments';
            } else {
                $komments = "<b>Комментарий к заказу: </b>" . strip_tags($_POST['userKomments']) . "; ";
            }
        }

        if (isset($_POST['agreement']) ) {
            echo 'agreement';
            if(empty($_POST['agreement'])) {
                echo 'agreement';
            } else {
                $agreement = "<b>Соглашение: </b>" . strip_tags($_POST['agreement']) . "<br>";
            }
        }

        if (isset($_POST['finalPrice']) ) {
            $finalPrice = "<b>Общая стоимость: </b>" . strip_tags($_POST['finalPrice']) . "<br>";
        }



        $productArr=[];
        $counter = 0;
        $body;
        $bodyHeader = '<table border="0" cellpadding="0" cellspacing="0" style="border-bottom:1px; border-right:1px; border-color:#e2e2e2; border-style: solid; width:800px" width="100%" align="center">
            <tr >
                <th colspan="3" style="width: 400px; padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;">' . $name . $tel . $city . $komments . $finalPrice .'</th>
                <th colspan="4" style="width: 400px; padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;">' . $email . $agreement .'</th>
            </tr>';

        foreach ($_POST as $key =>  $value) {
            $body.= '<tr>';
            if (is_array($value) || $value instanceof Traversable) {
                foreach ($value as $k => $v) {

                    if($k == 'productImg'){
                        $productImg = '<img src="' . $v . '" width="100" height="100" alt="картинка товара">';
                        $body.=
                            '
                                            <td style="width: 100px; padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                            <div style="padding: 5px;">
                                            '
                                                . $productImg .
                                            '
                                            </div></td>';
                    }
                    if($k == 'productName'){
                        $body.=
                            '<td style="width: 300px;  padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                            <div style="padding: 5px;">
                                            '
                            . $v .
                            '
                                            </div></td>';
                    }
                    if($k == 'productSize'){
                        if(!empty($v)){
                            $body.=
                                '<td style="width: 100px;  padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                            <div style="padding: 5px;"> Размер:
                                            '
                                . $v .
                                '
                                            </div></td>';
                        } else {
                            $body.=
                                '<td style="width: 100px;  padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                    <div style="padding: 5px;"> Размер отстутствует </div>
                                </td>';
                        }
                    }
                    if($k == 'productId'){
                        $body.=
                            '<td style="width: 100px;  padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                                <div style="padding: 5px;"> ID:
                                                '
                            . $v .
                            '
                                                </div></td>';
                    }
                    if($k == 'productPrice'){
                        $body.=
                            '<td style="width: 100px;  padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                                <div style="padding: 5px;"> Цена:
                                                '
                            . $v .
                            '
                                                </div></td>';
                    }
                    if($k == 'productQuantity'){
                        $body.=
                            '<td style="width: 100px;  padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                                <div style="padding: 5px;"> Кол-во:
                                                '
                            . $v .
                            '
                                                </div></td>';
                    }

                    if($k == 'productPriceCommon'){
                        $body.=
                            '<td style="width: 100px;  padding-top:15px; padding-bottom:15px; padding-right:15px; padding-left:15px; text-align:center; border-top:1px; border-left:1px; border-right:0; border-bottom:0; border-color:#e2e2e2; border-style: solid;" >
                                                <div style="padding: 5px;"> Общая цена:
                                                '
                            . $v .
                            '
                                                </div></td>';
                    }

                }

                $body.= '</tr>';
            }

        };
        $bodybottom = '</table>';
    }

    if(defined('HOST') && HOST != '') {
        $mail = new PHPMailer;
        $mail->isSMTP();
        $mail->Host = HOST;
        $mail->SMTPAuth = true;
        $mail->Username = LOGIN;
        $mail->Password = PASS;
        $mail->SMTPSecure = 'ssl';
        $mail->Port = PORT;
        $mail->AddReplyTo(SENDER);
    } else {
        $mail = new PHPMailer;
    }

        $mail->setFrom(SENDER);
    $mail->addAddress(CATCHER);
    if(defined(CATCHER2)){
        $mail->addAddress(CATCHER2);
    }
    $mail->CharSet = CHARSET;
    $mail->isHTML(true);
        $mail->Subject = SUBJECT; // Заголовок письма
        $mail->Body = "$bodyHeader $body $bodybottom";
        if(!$mail->send()) {
            echo 'attantion';
        } else {
            // echo '<p class="smartlid__respond-success">' . SUCCESSMSGS . '</p>';
            echo 'successmsgs';
        }
} else {
    header ("Location: /");
}
?>




<?php
// формируем запись в таблицу google (изменить)
$url = "https://docs.google.com/forms/u/0/d/e/0000000000000000000000I7A8vdw/formResponse";
// сохраняем url, с которого была отправлена форма в переменную utm
//$utm = $_SERVER["HTTP_REFERER"];
// ссылка для переадресации (изменить)

// массив данных (изменить entry, draft и fbzx)
$post_data = array (
"entry.277310410" => "Новый",
"entry.1985803010" => "Новый заказ товара",
"entry.2141804827" => $_POST['userName'],
"entry.1665049066" => $_POST['userTel'],
"entry.1531952552" => $_POST['userEmail'],
"entry.1442370674" => "Товар 1",
"entry.885016319" => $_POST['finalPrice'],
"entry.332690697" => $_POST['userCity'],
"entry.1887494179" => $_POST['userKomments'],
"entry.1984777639" => "",
"entry.367273395" =>  $_SERVER["REMOTE_ADDR"],
"entry.1651136597" =>  $_REQUEST["referer"],
"entry.404468929" =>  $_SERVER["HTTP_REFERER"],
"entry.2014871732" =>  $_REQUEST["utm_source"],
"entry.77833353" =>  $_REQUEST["utm_term"],
"entry.1232461161" =>  $_REQUEST["utm_medium"],
"entry.368440688" =>  $_REQUEST["utm_content"],
"entry.2019892594" =>  $_REQUEST["utm_campaign"],
"draftResponse" => "[null,null,&quot;4667457120756050046&quot;]",
"pageHistory" => "0",
"fbzx" => "4667457120756050046",
"fvv" => "1"
);

// Далее не трогать
// с помощью CURL заносим данные в таблицу google
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// указываем, что у нас POST запрос
curl_setopt($ch, CURLOPT_POST, 1);
// добавляем переменные
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//заполняем таблицу google
$output = curl_exec($ch);
curl_close($ch);

//перенаправляем браузер пользователя на скачивание оффера по нашей ссылке
//header('Location: '.$link);
?>

Сверху обрапотчик почты, данные прекрасно отправляет, а вот ниже настраиваю отправку в таблицы гугл методом Post, так вот все добавил все работает, а вот данные самого товара никак не могу добавить, нужно как то передавать productName, productPrice, productQuantity, в поле entry.1442370674,
Буду преогромно благодарен любой помощи, знаний не хватает, да и сил уже нету методом тыка ....
Заранее всем откликнувшимся спасибо...
 
Если продукт один - и судя по коду так оно и есть, то
после
$productArr=[];
вставить
$productData=[];

После
if($k == 'productName'){
Добавить
$productData[]=$v;

И так по аналогии для всех свойств


и
"entry.1442370674" => "Товар 1",

заменить на
"entry.1442370674" => implode(',',$productData),


Это если на скорую руку.
МОжно заморочиться с сортировкой самих свойств или еще чего, но это простейший вариант сейчас для незнающего человека.
 
Если продукт один - и судя по коду так оно и есть, то
после
$productArr=[];
вставить
$productData=[];

После
if($k == 'productName'){
Добавить
$productData[]=$v;

И так по аналогии для всех свойств


и
"entry.1442370674" => "Товар 1",

заменить на
"entry.1442370674" => implode(',',$productData),


Это если на скорую руку.
МОжно заморочиться с сортировкой самих свойств или еще чего, но это простейший вариант сейчас для незнающего человека.
Спасибо ОГРОМНЕЙШЕЕ, Вы не представляете сколько нервов моих Вы спасли... Все супер, Для просмотра ссылки Войди или Зарегистрируйся
Конечно в идеале бы еще добавить к цене валюту руб. а к количеству добавить шт. плюс обернуть это их в скобки, и зделать перенос строки если будет куплено два товара и больше...

Но это будет уже наглостью с моей стороны:)
Еще посижу в интернете что то да найду, еще раз большое Вам спасибо.
 
$productData[]="({$v}руб.)";
$productData[]="({$v}шт.)";

для двух товаров нужно смотреть в каком виде оно все передает

var_dump($_POST);
в помощь
 
$productData[]="({$v}руб.)";
$productData[]="({$v}шт.)";

для двух товаров нужно смотреть в каком виде оно все передает

var_dump($_POST);
в помощь
Отлично, то что доктор прописал, единственное это перенос для несколькох товаров, но это уже не столь важно Для просмотра ссылки Войди или Зарегистрируйся
Скиньте реквизиты в личку, я хоть как то отблагодарю, благодаря Вам я хоть Высплюсь сегодня....
 
для переноса можно попробовать
$productData[]="({$v}шт.)\n";

или
$productData[]="({$v}шт.)\r\n";

может схавает гугл док.
 
Отлично, то что доктор прописал, единственное это перенос для несколькох товаров, но это уже не столь важно Для просмотра ссылки Войди или Зарегистрируйся
Скиньте реквизиты в личку, я хоть как то отблагодарю, благодаря Вам я хоть Высплюсь сегодня....
Ураааа, перенос тоже зделал Для просмотра ссылки Войди или Зарегистрируйся , я просто к последнему (количество) добавил \n все работает, счас еще найду как запятую убрать, и можно ложится спать....
Спасибо Вам огромное....
 
для переноса можно попробовать
$productData[]="({$v}шт.)\n";

или
$productData[]="({$v}шт.)\r\n";

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