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

Тема в разделе "PHP", создана пользователем grebovich, 6 апр 2020.

XEvil 4.0 Релиз Состоялся!
Модераторы: latteo
  1. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    344
    Симпатии:
    57
    Всем привет.
    Парни прошу помощи, уже вторые сутки пошли, мозг плавится....
    Принимаю заказы с лейдинга которые отправляются на почту, но я настраиваю чтобы паралельно писались они в гугл таблицу, есть код обработчика такой:
    Код:
    <?
    // 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,
    Буду преогромно благодарен любой помощи, знаний не хватает, да и сил уже нету методом тыка ....
    Заранее всем откликнувшимся спасибо...
     
  2. krdma

    krdma Постоялец

    Регистр.:
    1 июн 2009
    Сообщения:
    130
    Симпатии:
    41
    Если продукт один - и судя по коду так оно и есть, то
    после
    $productArr=[];
    вставить
    $productData=[];

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

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


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

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


    Это если на скорую руку.
    МОжно заморочиться с сортировкой самих свойств или еще чего, но это простейший вариант сейчас для незнающего человека.
     
  3. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    344
    Симпатии:
    57
    Спасибо ОГРОМНЕЙШЕЕ, Вы не представляете сколько нервов моих Вы спасли... Все супер, https://prnt.sc/rucnzq
    Конечно в идеале бы еще добавить к цене валюту руб. а к количеству добавить шт. плюс обернуть это их в скобки, и зделать перенос строки если будет куплено два товара и больше...

    Но это будет уже наглостью с моей стороны:)
    Еще посижу в интернете что то да найду, еще раз большое Вам спасибо.
     
  4. krdma

    krdma Постоялец

    Регистр.:
    1 июн 2009
    Сообщения:
    130
    Симпатии:
    41
    $productData[]="({$v}руб.)";
    $productData[]="({$v}шт.)";

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

    var_dump($_POST);
    в помощь
     
  5. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    344
    Симпатии:
    57
    Отлично, то что доктор прописал, единственное это перенос для несколькох товаров, но это уже не столь важно https://prnt.sc/rud3an
    Скиньте реквизиты в личку, я хоть как то отблагодарю, благодаря Вам я хоть Высплюсь сегодня....
     
  6. krdma

    krdma Постоялец

    Регистр.:
    1 июн 2009
    Сообщения:
    130
    Симпатии:
    41
    для переноса можно попробовать
    $productData[]="({$v}шт.)\n";

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

    может схавает гугл док.
     
  7. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    344
    Симпатии:
    57
    Ураааа, перенос тоже зделал https://prnt.sc/rud7la , я просто к последнему (количество) добавил \n все работает, счас еще найду как запятую убрать, и можно ложится спать....
    Спасибо Вам огромное....
     
  8. grebovich

    grebovich

    Регистр.:
    19 мар 2012
    Сообщения:
    344
    Симпатии:
    57
    Да, я так и зделал, получилось все классно, как и хотелось....