Форум UnitCMS

Форма для отправки заказа order_custinfo.tpl.html

Alex

  • ***
  • 77
  • +0/-0
Движок 2.1.6 Добавил в order_custinfo.tpl.html поле с выбором типа доставки(Доставка курьером и Самовывоз)
<div class="form-group">
    <label for="dostavka" class="col-sm-3 control-label">Способ доставки <em class="red">*</em></label>
    <div class="col-sm-9">
      <input type="radio" name="tipdost" value="Доставка курьером" /> Доставка курьером</input>   
      <input type="radio" name="tipdost" value="Самовывоз" /> Самовывоз </input>
    </div>
  </div>
Заполняю все поля формы ставлю отметку в "radio" Самовывоз? Нажимаю оформить заказ!
Далее на следующей форме в предварительно добавленном поле <div class="row">
<div class="col-xs-3"><b>Способ доставки:</b></div>
<div class="col-xs-9">{$orderer.cust_tipdost}</div>
</div>
order_place.tpl.html
не выводится нужное значение {$orderer.cust_tipdost}, только Способ доставки: и пусто. В админке сайта в новом заказе нет поля со Способом доставки выбранном в форме.
В файле order_place.php добавил переменную tipdost b передаю ее.
На почтовый ящик для заказов приходит заказ и в нем есть Способ доставки выбранный в форме.
Как вывести выбранный Способ доставки в форме order_place.tpl.html и передать его в заказ в админку сайта, чтобы там в заказе тоже присутствовал Способ доставки?

pehser

  • *****
  • 2597
  • +236/-7
  • Создатель LegoSP и разработчик UnitCMS
    • shopmk
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #1 : Июнь 20, 2020, 08:30:51 pm »
для начало очистите core/cache если єто не поможет покажите код из  order_place.php
WM: Z255040886923, R104460203223, U381335345755 Yandex: 41001700114942, Privet24: 4731219612246052
---
Я пользуюсь обменником

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #2 : Июнь 21, 2020, 07:08:29 am »
очистка кэша не помогла, вот файл
<?php
    
/*****************************************************************************
     *                                                                           *
     * Lego SP - lego.shop-script.org                                            *
     * Copyright (c) 2012 Sergey Piekhota. All rights reserved.                  *
     *                                                                           *
     ****************************************************************************/

    
if( isset( $_POST["complete_order"] ) || ( isset($_GET["order_placement_result"] ) && isset($_SESSION['order_reg'] ) ) ) //place order
    
{

        if( !
trim$_POST["first_name"] ) || !preg_match'/[.+a-zA-Z0-9_-]+@[a-zA-Z0-9-]+.[a-zA-Z]+/'$_POST["email"] ) || !preg_match'/^[\s0-9-()+]+$/'$_POST["phone"] ) ){
            
$smarty->assign"error");
            
$smarty->assign"main_content_template""order_place.tpl.html" );
        }
        
//shopping cart items count
        
$c 0;



        
//not empty?
        
if( $cart_module->total_items() ){
            
//insert order into database
            
if( preg_match'/^[\s0-9-()+]+$/'$_POST["phone"] ) )
                
$post_phone $_POST["phone"]; else $post_phone validate_search_string$_POST["phone"] );
            if( isset(
$_POST["email"]) && filter_input(INPUT_POST,'email'FILTER_VALIDATE_EMAIL))
                
$post_email $_POST["email"];

            
//select manager
            
$q_m db_query"SELECT ID, access, online_name, email FROM " MANAGER_TABLE ) or die ( db_error() );
            while( 
$row db_fetch_row$q_m ) )
                if( 
$row[1] == ){
                    
$man_arr[] = $row[0];
                    
$man_name[$row[0]] = $row[2];
                    
$man_email[$row[0]] = $row[3];
                }
            if( 
$man_arr ){
                
shuffle$man_arr );
                
$smarty_mail->assign"manager"$man_name[$man_arr[0]] );
            }

            
$order_info = array();
            
$order_info['order_time'] = get_current_time();
            
$order_info['cust_firstname'] = $_POST["first_name"];
            
$order_info['cust_lastname'] = $_POST["last_name"];
            if (isset(
$post_email)) {
                
$order_info['cust_email'] = $post_email;
            }
              if (isset(
$post_tipdost)) {
                
$order_info['cust_tipdost'] = $post_tipdost;
            }
            
$order_info['cust_country'] = $_POST["country"];
            
$order_info['cust_zip'] = $_POST["zip"];
            
$order_info['cust_state'] = $_POST["state"];
            
$order_info['cust_city'] = $_POST["city"];
            
$order_info['cust_address'] = $_POST["address"];
            
$order_info['cust_phone'] = $post_phone;
            
$order_info['comment'] = $_POST["comment"];
            
$order_info['manager'] = $man_arr[0];
            if( isset( 
$_SESSION['cust_id'] ) )
                
$order_info['custID'] = $_SESSION['cust_id'];
            
add_fieldORDERS_TABLE$order_info ) or die(db_error());
            
$oid db_insert_id(); //order ID
            
$history = array();
            
$history['orderID'] = $oid;
            if (isset(
$_SESSION["log_name"])) {
                
$history['menager_name'] = $_SESSION["log_name"];
            }
            
$history['action'] = ORDER_HISTORY_ADD;
            
add_field(ORDERS_HISTORY_TABLE$history);
            unset(
$history);
            
//now move shopping cart content to the database

            
$k 0//total cart value
            
$products = array();
            
$adm ""//order notification for administrator

            
foreach ($cart_module->contents() as $cart_product){
                
$manager db_assoc"SELECT email manager_email as mail, online_name as name FROM " PRODUCTS_TABLE ' as P LEFT JOIN ' MANAGER_TABLE " as M on (M.ID=P.managerID) WHERE productID=".$cart_product['productID']);
                if (
$manager && filter_var$manager['mail'], FILTER_VALIDATE_EMAIL)){
                    
$managers_mail[]= $manager;
                    unset(
$manager);
                }

                
$order_insert = array();
                
$order_insert['orderID'] = $oid;
                
$order_insert['productID'] = $cart_product['productID'];
                
$order_insert['name'] = $cart_product['name'];
                
$order_insert['Price'] = $cart_product['Price'];
                
$order_insert['Quantity'] = $cart_product['quantity'];
                
add_fieldORDERED_CARTS_TABLE$order_insert );
                unset(
$order_insert);
                if( 
$cart_module->has_options$cart_product['id'] ) ){
                    
db_query'UPDATE `' PRODUCT_OPTIONS_V_TABLE '` SET `count` = `count`-' $cart_product['quantity'] . ' WHERE `productID` = ' $cart_product['productID'] . ' and variantID in (' add_in$cart_module->product_options$cart_product['id'] ) ) . ')' );
                }
                
//update item sold and in_stock

                
update_fieldPRODUCTS_TABLE,array("items_sold"=> array("fun" =>'items_sold+1'),"in_stock"=>array("fun"=>'in_stock - '.$cart_product['quantity'])),'productID='$cart_product['productID']);
                
                
$products[]= $cart_product;
                
//Формирует текст письма администратору и менеджерам
                
$adm .= $cart_product['name'] . "; " TABLE_PRODUCT_COST " - " $cart_product['Price_letters'] . "; " TABLE_PRODUCT_QUANTITY " - " $cart_product['quantity'] . "; " TABLE_PRODUCT_SUMM " - " $cart_product['cost'] . "\n";
                
$adm .= "\n";
            }

            if( isset( 
$_SESSION["get_fast_order"] ) ){
                
$q1 db_query"insert into " ORDERED_CARTS_TABLE " (orderID, productID, name, Price, Quantity) values ('$oid', '$oid', '" ADMIN_FAST_ORDER "', '" $_SESSION["get_fast_order"] . "', '1');" ) or die ( db_error() );
                
$k += $_SESSION["get_fast_order"];
            }

            if (
$cart_module->get_present()) {
                
$tmp = array();
                
$tmp['orderID'] = $oid;
                
$tmp['productID'] = -5;
                
$tmp['Quantity'] = 1;
                
$tmp['Price'] = 0;
                
$tmp['name'] = $cart_module->get_present_name();
                
add_field(ORDERED_CARTS_TABLE$tmp);
                
$adm .= $tmp['name'].' - 'STRING_PRESENT."\n\n";
                
$smarty_mail->assign("present"$tmp['name']);
                unset(
$tmp);
            }


            
$sql 'SELECT payvalue as name,type FROM ' PAYMENT_TABLE ' as T1 JOIN ' PAYOPTION_TABLE ' as T2 ON(T1.enabled = 1 AND T1.payID = T2.payID AND T2.payoption = "name")';
            
$payment_type db_arAll$sql );
            
$smarty_mail->assign"payment_type"$payment_type );

            
$mail_to validate_search_string$_POST["email"] );
            
$smarty_mail->assign"mail_to"$mail_to );

            
//assign order content to smarty
            
$smarty_mail->assign"order_content"$products );
            
$smarty_mail->assign"order_total"$cart_module->full_total() );
            
$smarty_mail->assign"order_id"$oid );
            
$smarty_mail->assign"order_custname"$_POST["first_name"] . " " $_POST["last_name"] );
            
$smarty_mail->assign"order_shipping_address""" $_POST["city"] . "\n" $_POST["address"] ); //."\n?.".." ".$_POST["state"]."  ".$_POST["zip"]."\n".$_POST["country"]


            
if( isset( $_SESSION["get_fast_order"] ) ){
                
$smarty_mail->assign"get_fast_order"$_SESSION["get_fast_order"] );
            }


            
$_SESSION["order_id"] = $oid;
            
//$_SESSION["order_amount"] = $k;

            //send message to customer
            
$file_name "./css/css_" CONF_COLOR_SCHEME "/image/mail_logo.jpg";
            
$SHOP_NAME CONF_SHOP_NAME;
            
$NOTIFICATION_SUBJECT EMAIL_CUSTOMER_ORDER_NOTIFICATION_SUBJECT;
            
$last_name $_POST["last_name"];
            
$first_name $_POST["first_name"];
            if( isset( 
$managers_mail ) && count$managers_mail ) > ){
                
$managers_mail array_unique$managers_mail );
                foreach( 
$managers_mail as $key => $manager_mail )
                    
$manager .= $manager_mail['name'] . ", ";
                
$manager substr$manager0strlen$manager ) - );
                
$smarty_mail->assign"manager"$manager );
                
$adm .= "\n" ADMIN_MANAGER_MAIL ": " $manager "\n";
            } elseif( 
$man_arr ){
                
$adm .= "\n" ADMIN_MANAGER_MAIL ": " $man_name[$man_arr[0]] . "\n";
            }

            
//Доставка
            
if( !$cart_module->is_delivery_free() && $deliveryID $cart_module->get_delivery() ){
                
$ar_ship db_assoc'select ' $oid ' as orderID,-3 as productID,code as name,' $cart_module->delivery_price() . ' as Price,1 as Quantity from ' SHARE_TABLE ' where id=' $deliveryID );
                
$ar_ship['name'] = ADMIN_SHIPPING ' ' $ar_ship['name'];
                
add_fieldORDERED_CARTS_TABLE$ar_ship );
                
$shipping = array();
                
$shipping['name'] = $ar_ship['name'];
                
$shipping['Price'] = show_price$ar_ship['Price'] );
                
$smarty_mail->assign"shipping"$shipping );
                
$adm .= $shipping['name'] . " " $shipping['Price'] . "\n\n";
                unset( 
$deliveryID$ar_ship$shipping );
            }

            
//Если есть скидка
            
if( $cart_module->get_discont() ){
                
$discount = array( $cart_module->get_discont'val' ),  $cart_module->get_discont());
                
$q1 db_query"insert into " ORDERED_CARTS_TABLE " (orderID, productID, name, Price, Quantity) values ('$oid', -1, " int_textADMIN_DISCOUNT_STRING " " $discount[0].'%' ) . ", '" $discount[1] . "', '1');" ) or die ( db_error() );
                
$smarty_mail->assign"discount"$discount );
                
$adm .= ADMIN_DISCOUNT_STRING " " $discount[0] . "% - " show_price($discount[1]) . "\n\n";
                unset( 
$discount );
            }
            
$from['mail'] = CONF_GENERAL_EMAIL;
            
$from['name'] = $SHOP_NAME;
            if (isset(
$post_email)) {
                
$html_body $smarty_mail->fetch("order_notification.tpl.html");
                
$to['mail'] = $_POST["email"];
                
$to['name'] = $_POST["first_name"]." ".$_POST["last_name"];
                
$file_img['file'] = $file_name;
                
$file_img['cid'] = 'mail_img_1';

                
phpmailer($to$fromEMAIL_CUSTOMER_ORDER_NOTIFICATION_SUBJECT''$html_body$file_img);
            }


            
$NOTIFICATION_SUBJECT EMAIL_ADMIN_ORDER_NOTIFICATION_SUBJECT.' - '$oid;
            
$last_name $_POST["last_name"];
            
$first_name $_POST["first_name"];
            
//notification for administrator
            
$od STRING_ORDER_ID ": $oid\n\n";


            if( isset( 
$_SESSION["get_fast_order"] ) ){
                
$adm .= ADMIN_FAST_ORDER " " $_SESSION["get_fast_order"] . CONF_CURRENCY_ID_RIGHT "\n\n";
            }

            if( isset( 
$_SESSION["present"] ) && $_SESSION["present"][1] ){
                
$adm .= $_SESSION["present"][2] . " - " STRING_PRESENT "\n\n";
            }

            
$adm .= EMAIL_CUSTOMER_COMMENT "\n" $_POST["comment"] . "\n";
            
/*$adm .= "\n" . CUSTOMER_FIRST_NAME . " " . $_POST["first_name"] . "\n" . CUSTOMER_LAST_NAME . " " . $_POST["last_name"] . "\n" . CUSTOMER_ADDRESS . ": " . $_POST["country"] . ", " . $_POST["zip"] . ", " . $_POST["state"] . ",  " . $_POST["city"] . ", " . $_POST["address"] . "\n" . CUSTOMER_PHONE_NUMBER . ": " . $_POST["phone"] . "\n" . CUSTOMER_EMAIL . ": " . $_POST["email"];*/
            /*скорректировал отправку переменных в письме, выше полная строка с данными*/
            
$adm .= "\n" CUSTOMER_FIRST_NAME " " $_POST["first_name"] . "\n" CUSTOMER_ADDRESS " " $_POST["address"] . "\n" CUSTOMER_PHONE_NUMBER " " $_POST["phone"] . "\n" "Способ доставки: " $_POST["tipdost"] . "\n";        
            
phpmailerCONF_ORDERS_EMAIL$from$NOTIFICATION_SUBJECT$od $adm );

            if( isset( 
$managers_mail ) && count$managers_mail ) > ){
                foreach( 
$managers_mail as $key => $manager_mail ){
                    
phpmailer$manager_mail$from$NOTIFICATION_SUBJECT$od $adm );
                }
            }
            
            
$cart_module->destroy();
            
$url$unit->set_hurl(array('hurl' => false'id' => 1), 'cart/order_placed''order_placement_result');
            
header"Location: http://" CONF_SHOP_URL "/".$url );
            exit;
        } else 
//empty shopping cart
        
{
            
$url $unit->set_hurl(array('hurl' => false'id' => 1), 'cart''shopping_cart');
            
header("Location: http://".CONF_SHOP_URL."/".$url);
            exit;
        }
    }
    elseif (isset( 
$_GET["order_placement_result"] ) ) //show 'order successful' page
    
{

        
$order_info db_assoc"SELECT orderID, cust_firstname, cust_lastname, cust_email, cust_city, cust_address, cust_phone, comment, M.online_name manager FROM " ORDERS_TABLE ' as O LEFT JOIN ' MANAGER_TABLE ' as M on O.manager=M.ID  WHERE orderID=' . (int)$_SESSION["order_id"] ) or die ( db_error() );

        
$q db_query"SELECT name, Price, Quantity,productID FROM " ORDERED_CARTS_TABLE " WHERE orderID='" $order_info['orderID'] . "' ORDER BY id ASC" ) or die( db_error() );
        while( 
$row db_fetch_row$q ) ){

            if( 
substr_count$row[0], ADMIN_DISCOUNT_STRING ) > ){
                
$total -= $row[1] * $row[2];
                
$tmp explode" "$row[0] );
                
$row[4] = "<br /><b>" show_price$row[1] * $row[2] ) . "</b>";
                
$row[0] = "<br /><b>" $tmp[0] . "</b>";
                
$row[1] = "";
                
$row[2] = "<br /><b>" $tmp[1] . "</b>";
                
$res[] = Array();
                
$res[] = $row;
            } else{
                
#$row[1] = $row[1] / CURRENCY_val;
                
$total += $row[1] * $row[2];
                
$row[4] = show_price$row[1] * $row[2] );
                
$row[1] = show_price$row[1] );
                
$res[] = $row;
            }
        }
        
$order_info['total'] = show_price$total );
        
$smarty->assign"orderer"$order_info );
        
$smarty->assign"order"$res );
        unset( 
$order_info$res$row );
        
//select all payments
        
$q db_query"SELECT type, payvalue FROM " PAYMENT_TABLE " LEFT JOIN " PAYOPTION_TABLE " USING (payID) WHERE enabled='1' AND payoption = 'name'" ) or die ( db_error() );

        while( 
$row db_fetch_row$q ) ){
            
$payment_list['values'][] = $row[0];
            
$payment_list['names'][] = $row[1];
        }

        
$smarty->assign"payment_list"$payment_list );


        
$smarty->assign"main_content_template""order_place.tpl.html" );
    }

?>

pehser

  • *****
  • 2597
  • +236/-7
  • Создатель LegoSP и разработчик UnitCMS
    • shopmk
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #3 : Июнь 21, 2020, 11:07:16 am »
обратите внимание:
<?php
$order_info 
db_assoc"SELECT orderID, cust_firstname, cust_lastname, cust_email, cust_city, cust_address, cust_phone, comment, M.online_name manager FROM " ORDERS_TABLE ' as O LEFT JOIN ' MANAGER_TABLE ' as M on O.manager=M.ID  WHERE orderID=' . (int)$_SESSION["order_id"] ) or die ( db_error() );
« Последнее редактирование: Июнь 21, 2020, 11:08:51 am от pehser »
WM: Z255040886923, R104460203223, U381335345755 Yandex: 41001700114942, Privet24: 4731219612246052
---
Я пользуюсь обменником

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #4 : Июнь 21, 2020, 11:25:46 am »
Да, изначально добавлял так переменную, но при формировании заказа система ругалась на переменную cust_tipdost
<?php
$order_info 
db_assoc"SELECT orderID, cust_firstname, cust_lastname, cust_email, cust_city, cust_address, cust_tipdost, cust_phone, comment, M.online_name manager FROM " ORDERS_TABLE ' as O LEFT JOIN ' MANAGER_TABLE ' as M on O.manager=M.ID  WHERE orderID=' . (int)$_SESSION["order_id"] ) or die ( db_error() );

и выдавало такую ошибку - Unknown column 'cust_tipdost' in 'field list'
« Последнее редактирование: Июнь 21, 2020, 11:34:12 am от Alex »

pehser

  • *****
  • 2597
  • +236/-7
  • Создатель LegoSP и разработчик UnitCMS
    • shopmk
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #5 : Июнь 21, 2020, 11:34:38 am »
рас ругается значит в БД в таблицу не добавили
WM: Z255040886923, R104460203223, U381335345755 Yandex: 41001700114942, Privet24: 4731219612246052
---
Я пользуюсь обменником

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #6 : Июнь 21, 2020, 11:38:53 am »
тоже думал об этом, что вот здесь нужно внести переменную includes/database/install/data.sql но засомневался

думаю добавить ее как (646, 'CUST_TIPDOST'), так будет правильно?
« Последнее редактирование: Июнь 21, 2020, 11:42:50 am от Alex »

pehser

  • *****
  • 2597
  • +236/-7
  • Создатель LegoSP и разработчик UnitCMS
    • shopmk
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #7 : Июнь 21, 2020, 11:51:48 am »
тоже думал об этом, что вот здесь нужно внести переменную includes/database/install/data.sql но засомневался

думаю добавить ее как (646, 'CUST_TIPDOST'), так будет правильно?

нет, поле надо в саму базу добовлять в таблицу "ORDERS_TABLE"
WM: Z255040886923, R104460203223, U381335345755 Yandex: 41001700114942, Privet24: 4731219612246052
---
Я пользуюсь обменником

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #8 : Июнь 21, 2020, 12:09:59 pm »
добавил в ss_orders в столбцы как (cust_tipdost varchar 20 Null utf8_general_ci) теперь заказ проходит без ошибки Unknown column 'cust_tipdost' in 'field list', но поле пустое на почту приходит нормально Способ доставки: Самовывоз, а в админку все-равно нет

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #9 : Июнь 21, 2020, 12:27:34 pm »
думаю, что тип значения в БД неверный для cust_tipdost(varchar) пробовал bit, тоже не проходит
tipdost это значение radio которое отмечается точкой в форме

pehser

  • *****
  • 2597
  • +236/-7
  • Создатель LegoSP и разработчик UnitCMS
    • shopmk
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #10 : Июнь 21, 2020, 01:04:46 pm »
при оформлении заказа в базу значение этого  поля попадает?
WM: Z255040886923, R104460203223, U381335345755 Yandex: 41001700114942, Privet24: 4731219612246052
---
Я пользуюсь обменником

pehser

  • *****
  • 2597
  • +236/-7
  • Создатель LegoSP и разработчик UnitCMS
    • shopmk
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #11 : Июнь 21, 2020, 01:08:18 pm »
В движке есть доставка нафига ты велосипед изобретаещ?

Цитировать
а в админку все-равно нет
вот офигиваю с такого заявление ...
Вот как я вижу это "я тут поле в базу добавил, а вот движок почемуто мне его не выводит". На верно потому что админке ничего не известно о твоих манипуляциях
WM: Z255040886923, R104460203223, U381335345755 Yandex: 41001700114942, Privet24: 4731219612246052
---
Я пользуюсь обменником

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #12 : Июнь 21, 2020, 01:09:04 pm »
в базе в столбце cust_tipdost - стоит 0

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #13 : Июнь 21, 2020, 01:15:33 pm »
да какой я велосипед то изобретаю? Мне всего лишь нужно доработать форму с выбором типа доставки и отрпавить это значение в заказы на почту и в админку!
Ведь в стандартной форме нет такого поля что мне нужно, а точнее заказчику.
« Последнее редактирование: Июнь 21, 2020, 01:19:57 pm от Alex »

Alex

  • ***
  • 77
  • +0/-0
Re: Форма для отправки заказа order_custinfo.tpl.html
« Ответ #14 : Июнь 21, 2020, 02:18:36 pm »
в админке в custord_edit_orders.tpl.html добавил поле с выводом переменной cust_tipdost но так и не приходит из формы это значение