Jump to content
  • 0

Отправка запроса на почту.


newjey
 Share

Question

Добрый день.

Подскажите, делаю выборку способов доставки в корзине магазина таким образом:

<label for="oplata">Cпособ доставки:<br /></label>
<form>
   <p><input type="radio" name="answer" value="a1">Курьерская доставка по Киеву<Br>
 <input type="radio" name="answer" value="a2">Посылка Новой Почтой<Br>
 <input type="radio" name="answer" value="a3">Посылка Укр Почта<Br>
 <input type="radio" name="answer" value="a4">Самовывоз в г.Киеве</p>
  </form>

Подскажите как мне организовать отправку данных при выборе того или иного варианта доставки? Если к примеру вывод заполненного поля имени прописано как:

$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";

Спасибо.

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Не до конца описано:

как в php происходит перенос $checkout['name'] из пришедших данных?

как отправляется name, если его даже в форме нет?

вообще твою проблему можно решить несколькими способами, самый простой:

Если value="a1" заменишь на value="Курьерская доставка по Киеву" и так для всех остальных, то в php скрипте получится:


$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['answer']."\n";

и это при том, что $checkout - это массив как-то связанный с GET или POST массивом и в этой связи есть проверка answer.

Link to comment
Share on other sites

  • 0

Не до конца описано:

как в php происходит перенос $checkout['name'] из пришедших данных?

как отправляется name, если его даже в форме нет?

вообще твою проблему можно решить несколькими способами, самый простой:

Если value="a1" заменишь на value="Курьерская доставка по Киеву" и так для всех остальных, то в php скрипте получится:


$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['answer']."\n";

и это при том, что $checkout - это массив как-то связанный с GET или POST массивом и в этой связи есть проверка answer.

Перенос происходит так

<input id="name" name="checkout[name]" value="<?php if ( $checkout ) echo $checkout['name']; ?>" class="inputbox" />

Link to comment
Share on other sites

  • 0

Не до конца описано:

как в php происходит перенос $checkout['name'] из пришедших данных?

как отправляется name, если его даже в форме нет?

вообще твою проблему можно решить несколькими способами, самый простой:

Если value="a1" заменишь на value="Курьерская доставка по Киеву" и так для всех остальных, то в php скрипте получится:


$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['answer']."\n";

и это при том, что $checkout - это массив как-то связанный с GET или POST массивом и в этой связи есть проверка answer.

Перенос происходит так

<input id="name" name="checkout[name]" value="<?php if ( $checkout ) echo $checkout['name']; ?>" class="inputbox" />

Вышеприведённый вами способ

$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['answer']."\n";

не отрабатывается, в письме приходит только Способ доставки: и всё.

Для полной ясности привожу пример всего кода целиком:

<?php 
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
//defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
/**
*
* @version $Id: checkout_without_register_form.php,v 1.0 2006/10/20 23:31 tug Exp $
* @package VirtueMart
* @subpackage html
* @copyright Copyright (C) 2004-2005 Soeren Eberhardt. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
!!!!!!!! ПОДСТАВИЛ В ПЕРЕМЕННУЮ$vendor_email['from'] ЛЕВОЕ ЗНАЧЕНИЕ И ТОГДА ОТПРАВЛЯЕТСЯ АДМИНУ НА МЫЛО ЕСЛИ НЕ ЮЗЕР НЕ ХОЧЕТ ОТПРАВЛЯТЬСЕБЕ!!!* is

*

See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/
mm_showMyFileName( __FILE__ );

$checkout = vmGet($_REQUEST, 'checkout', '');
$error = '';
if ( is_array($checkout) && count($checkout) ) {
require_once( CLASSPATH.'ps_main.php' );

if( $checkout['name'] == '' || vmValidateName($checkout['name']) == false ) {
$error .= '<p>Вы не указали имени контактного лица или указали неверно.</p>';
}

preg_replace('/\D/', '', $checkout['phone']);
if ( $checkout['phone'] == '' || strlen($checkout['phone']) < 6 ) {
$error .= '<p>Вы не указали контактного телефона или указали неверно.</p>';
}

if ( $checkout['address'] == '' || strlen($checkout['address']) < 8 ) {
$error .= '<p>Вы не указали свой адрес или указали неверно.</p>';
}

if ( function_exists('vmValidateEmail') ) {
$email_check = vmValidateEmail($checkout['email']);
}
else {
$email_check = mShop_validateEmail($checkout['email']);
}

if ( ($checkout['customer_copy'] == 1 && !$checkout['email']) || ($checkout['customer_copy'] == 1 && $email_check == false) ) {
$error .= '<p>Вы указали, что хотите получить копию заказа на свою электронную почту, но не указали адрес или указали неверно.</p>';
}
}

if ( !is_array($checkout) || !count($checkout) || !empty($error) ) {
?>

<table align="left" border="0" cellpadding="1" cellspacing="1" style="width: 880px; ">
<tbody>
<tr>
<td>
<legend class="sectiontableheader"><span style="color:#00008B;"><h1><i><b>Оформить заказ.</span></h1></i></b></legend><span style="color:#8B8989;">  Вам не нужно регистрироваться, чтобы совершить покупку в нашем магазине.</span></td>
</tr>
<tr>
<td>
<table align="left" border="0" cellpadding="1" cellspacing="1" style="width: 880px; ">
<tbody>
<tr>
<td>
<form method="post" action="index.php" id="without_register_form">
<?php if($error) echo '<fieldset><legend>Ошибка</legend>'.$error.'</fieldset>'; ?>
<fieldset>
<label for="name">Имя покупателя*: <br /></label>
<input id="name" name="checkout[name]" value="<?php if ( $checkout ) echo $checkout['name']; ?>" class="inputbox" /><br />

<label for="phone">Телефон*: <br /></label>
<input id="phone" name="checkout[phone]" value="<?php if ( $checkout ) echo $checkout['phone']; ?>" class="inputbox" /><br />

<label for="phone">Адрес*: <br /></label>
<input id="phone" name="checkout[address]" value="<?php if ( $checkout ) echo $checkout['address']; ?>" class="inputbox" /><br />

<label for="email">E-mail: <br /></label>
<input id="email" name="checkout[email]" value="<?php if ( $checkout ) echo $checkout['email']; ?>" class="inputbox" /><br />

<?php $selected = 'selected="selected"'; ?>
<label for="email">Отправить вам копию? <br /></label>
<select id="email" name="checkout[customer_copy]" class="inputbox" />
<optgroup>

<option value="1" <?php if( $checkout && $checkout['customer_copy'] == 1 ) echo $selected; ?>>Да</option>
<option value="0" <?php if( !$checkout || $checkout['customer_copy'] != 1 ) echo $selected; ?>>Нет</option>
</optgroup>
</select>
<br />

<label for="comment">Комментарий: <br /></label>
<textarea id="comment" name="checkout[comment]" class="inputbox"><?php if ( $checkout ) echo $checkout['comment']; ?></textarea><br />

<div id="submit_wrap">
<input type="submit" value="Отправить" class="button" style="width:auto;text-align:center" />
</div>

<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="checkout.without_register_form" />

</fieldset>
</form></td>
<td valign="top" align="left" nowrap>
<label for="oplata">Cпособ доставки:<br /></label>
<form>
<p><input type="radio" name="checkout[delivery]" value="Курьерская доставка по Киеву">Курьерская доставка по Киеву<br />
<input type="radio" name="checkout[delivery]" value="Посылка Новой Почтой">Посылка Новой Почтой<br />
<input type="radio" name="checkout[delivery]" value="Посылка Укр Почта">Посылка Укр Почта<br />
<input type="radio" name="checkout[delivery]" value="Самовывоз в г.Киеве">Самовывоз в г.Киеве<br />
</form></td><br />
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br />
<style>
<!--
#without_register_form {
font-size: 1em; /* размер шрифта формы */
}

#without_register_form fieldset {
/*width: 35em; /* рамка вокруг формы */
border: solid 1px #333; /* нормальная граница рамки */
}

#without_register_form legend {
}

#without_register_form label {
float: left; /* подписи к полям сдвигаются влево */
width: 15em; /* ширина колонки подписей */
line-height: 1em;
margin-right: 0.1em; /* отступ до поля ввода */
text-align: right;
}

#without_register_form input, #without_register_form select, #without_register_form textarea {
margin: 0 0 0.5em 0.2em;
width: 20em; /* ширина полей формы */
padding: 0;
/* делаем одинаковый шрифт для input, select, textarea */
font-family: Verdana, sans-serif;
font-size: 100%;
}

#without_register_form .noresize {
width:auto; /* для кнопок, переключателей */
}

#without_register_form .submit {
/* сдвигаем кнопку отправки */
/*margin-left:;*/
text-align: right;
}

#without_register_form #submit_wrap {
text-align: center;
margin-right:0.2em;
}
-->
</style>

<?php
}

else {
global $cart, $sess, $VM_LANG, $CURRENCY_DISPLAY;

// Проверяем чтобы был хотябы один товар.
if( $cart['idx']!=0 ) vmRedirect('index.php?option=com_virtuemart');


$ps_vendor_id = $_SESSION["ps_vendor_id"];
require_once(CLASSPATH. 'ps_checkout.php' );
$ps_checkout = new ps_checkout;
require_once(CLASSPATH. 'ps_product.php' );
$ps_product = new ps_product;
require_once(CLASSPATH.'ps_cart.php');
$ps_cart = new ps_cart;

$db = new ps_DB;

//if (AFFILIATE_ENABLE == '1') {
// require_once(CLASSPATH.'ps_affiliate.php');
// $ps_affiliate = new ps_affiliate;
//}

/* Генерим уникальный номер заказа в системе VM */
$order_number = $ps_checkout->get_order_number();

/* Подсчитываем примерную общую стоимость без учёта налогов и доставки */
$order_subtotal = $tmp_subtotal = $ps_checkout->calc_order_subtotal($d);

//$order_taxable = $ps_checkout->calc_order_taxable($d);
//$payment_discount = $d['payment_discount'] = $this->get_payment_discount($d['payment_method_id'], $order_subtotal);

/* DISCOUNT HANDLING */
if( !empty($_SESSION['coupon_discount']) ) {
$coupon_discount = floatval($_SESSION['coupon_discount']);
}
else {
$coupon_discount = 0.00;
}

// from now on we have $order_tax_details
//$d['order_tax'] = $order_tax = round( $this->calc_order_tax($order_taxable, $d), 2 );

// Проверяем чтобы сумма заказа не ушла в минус
if( $tmp_subtotal < 0 ) $order_subtotal = $tmp_subtotal = 0;
//if( $order_taxable < 0 ) $order_taxable = 0;

// from now on we have $order_tax_details
//$d['order_tax'] = $order_tax = round( $ps_checkout->calc_order_tax($order_taxable, $d), 2 );
//if( $this->_SHIPPING ) {
/* sets _shipping */
// $d['order_shipping'] = $order_shipping = round( $this->calc_order_shipping( $d ), 2 );

/* sets _shipping_tax
* btw: This is WEIRD! To get an exactly rounded value we have to convert
* the amount to a String and call "round" with the string. */
// $d['order_shipping_tax'] = $order_shipping_tax = round( strval($this->calc_order_shipping_tax($d)), 2 );

//$shipping_taxrate = $this->_SHIPPING->get_tax_rate();
//@$order_tax_details[$shipping_taxrate] += $order_shipping_tax;
//}
//else {
// $d['order_shipping'] = $order_shipping = $order_shipping_tax = $d['order_shipping_tax'] = 0.00;
//}

$timestamp = time() + ($mosConfig_offset*60*60);

// Вычисление итоговой суммы превращается в вычитании из предположительной суммы скидки по купону
$d['order_total'] = $order_total = $tmp_subtotal
/*+ $order_tax */
/*+ $order_shipping */
/*+ $order_shipping_tax*/
- $coupon_discount
/*- $payment_discount*/;

//$order_tax *= $discount_factor;

//if (!$this->validate_form($d)) {
// return false;
//}

//if (!$this->validate_add($d)) {
// return false;
//}

// Проверяем на отрицательное значение итоговую сумму заказа
if( $order_total < 0 ) $order_total = 0;

// Округляем итоговую сумму заказа до второго знака после запятой
$order_total = round( $order_total, 2);

// Пишем в лог отладочную информацию
$vmLogger->debug( '-- Checkout Debug--
Subtotal: '.$order_subtotal.'
Coupon Discount: '.$coupon_discount.'
————————
Order Total: '.$order_total.'
—————————-'
);

// Check to see if Payment Class File exists
//$payment_class = $ps_payment_method->get_field($d["payment_method_id"], "payment_class");
//$enable_processor = $ps_payment_method->get_field($d["payment_method_id"], "enable_processor");

//if (file_exists(CLASSPATH . "payment/$payment_class.php") ) {
// if( !class_exists( $payment_class ))
// include( CLASSPATH. "payment/$payment_class.php" );

// eval( "\$_PAYMENT = new $payment_class();" );
// if (!$_PAYMENT->process_payment($order_number,$order_total, $d)) {
// $vmLogger->err( $VM_LANG->_PHPSHOP_PAYMENT_ERROR." ($payment_class)" );
// $_SESSION['last_page'] = "checkout.index";
// $_REQUEST["checkout_next_step"] = CHECK_OUT_GET_PAYMENT_METHOD;
// return False;
// }
//}

//else {
// $d["order_payment_log"] = $VM_LANG->_PHPSHOP_CHECKOUT_MSG_LOG;
//}

// Если купон был подарочным, то мы его удаляем
if( @$_SESSION['coupon_type'] == "gift" ) {
$d['coupon_id'] = $_SESSION['coupon_id'];
include_once( CLASSPATH.'ps_coupon.php' );
ps_coupon::remove_coupon_code( $d );
}

// Получаем IP
if (!empty($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
else {
$ip = 'unknown';
}

/* 1.0.9
`order_id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL default '0',
`vendor_id` int(11) NOT NULL default '0',
`order_number` varchar(32) default NULL,
`user_info_id` varchar(32) default NULL,
`order_total` decimal(10,2) NOT NULL default '0.00',
`order_subtotal` decimal(10,5) default NULL,
`order_tax` decimal(10,2) default NULL,
`order_shipping` decimal(10,2) default NULL,
`order_shipping_tax` decimal(10,2) default NULL,
`coupon_discount` decimal(10,2) NOT NULL default '0.00',
`order_discount` decimal(10,2) NOT NULL default '0.00',
`order_currency` varchar(16) default NULL,
`order_status` char(1) default NULL,
`cdate` int(11) default NULL,
`mdate` int(11) default NULL,
`ship_method_id` varchar(255) default NULL,
`customer_note` text NOT NULL,
`ip_address` varchar(15) NOT NULL default '',
*/
/* Добавляем в базу основную информацию о заказе */
$q = "INSERT INTO #__{vm}_orders ";
$q .= "(user_id, vendor_id, order_number, user_info_id, ship_method_id, order_total, order_subtotal, order_tax, order_shipping, order_shipping_tax, order_discount, coupon_discount, order_currency, order_status, cdate, mdate, customer_note, ip_address) ";
$q .= "VALUES ( 0, ".$ps_vendor_id.", '".$order_number."', '".$d["ship_to_info_id"]."', '', '".$order_total."', '".$order_subtotal."', '".$order_tax."', '".$order_shipping."', '".$order_shipping_tax."', '".$payment_discount."', '".$coupon_discount."', '".$_SESSION['vendor_currency']."', 'P', '".$timestamp."', '".$timestamp."', '".addslashes(htmlspecialchars(strip_tags($checkout['comment'])))."', '".$ip."');";

$db->query($q);
$db->next_record();

/* Берем порядковый номер только что добавленного заказа */
$q = "SELECT order_id FROM #__{vm}_orders WHERE order_number = ";
$q .= "'" . $order_number . "'";

$db->query($q);
$db->next_record();

$d["order_id"] = $order_id = $db->f("order_id");

/**
* Создаём историю заказа.
*/
$mysqlDatetime = date("Y-m-d G:i:s", $timestamp);

$q = "INSERT INTO #__{vm}_order_history ";
$q .= "(order_id,order_status_code,date_added,customer_notified,comments) VALUES (";
$q .= "'$order_id', 'P', '" . $mysqlDatetime . "', 1, '')";
$db->query($q);

/**
* Insert the Order payment info
*/
//$payment_number = ereg_replace(" |-", "", @$_SESSION['ccdata']['order_payment_number']);

//$d["order_payment_code"] = @$_SESSION['ccdata']['credit_card_code'];

// Payment number is encrypted using mySQL ENCODE function.
//$q = "INSERT INTO #__{vm}_order_payment ";
//$q .= "(order_id, order_payment_code, payment_method_id, order_payment_number, ";
//$q .= "order_payment_expire, order_payment_log, order_payment_name, order_payment_trans_id) ";
//$q .= "VALUES ('$order_id', ";
//$q .= "'" . $d["order_payment_code"] . "', ";
//$q .= "'" . $d["payment_method_id"] . "', ";
//$q .= "ENCODE(\"$payment_number\",\"" . ENCODE_KEY . "\"), ";
//$q .= "'" . @$_SESSION["ccdata"]["order_payment_expire"] . "',";
//$q .= "'" . @$d["order_payment_log"] . "',";
//$q .= "'" . @$_SESSION["ccdata"]["order_payment_name"] . "',";
//$q .= "'" . $vmInputFilter->safeSQL( @$d["order_payment_trans_id"] ). "'";
//$q .= ")";
//$db->query($q);
//$db->next_record();

/**
* Вставляем информацию о адресах пользователя и покупателя. Т.к. у нас их нет, то пишем что-нить
* Вообще это очень важная хуйня, т.к. без неё заказы не отображаются в админке
*/
// Bill To Address
$q = "INSERT INTO `#__{vm}_order_user_info` (order_info_id, order_id, user_id, address_type, address_type_name, company, title, last_name, first_name, middle_name, phone_1, phone_2, fax, address_1, address_2, city, state, country, zip, user_email, extra_field_1, extra_field_2, extra_field_3, extra_field_4, extra_field_5, bank_account_nr, bank_name, bank_sort_code, bank_iban, bank_account_holder, bank_account_type) ";
$q .= "VALUES ('', '".$order_id."', 0, 'BT', '-default-', '', '', '', '".$checkout['name']."', '', '".$checkout['phone']."', '', '', '".$checkout['address']."', '', '', '', '', '', '".$checkout['email']."', '', '', '', '', '', '', '', '', '', '', '') ";
$db->query( $q );

// Ship to Address if applicable
//$q = "INSERT INTO `#__{vm}_order_user_info` ";
//$q .= "SELECT '', '$order_id', '".$auth['user_id']."', address_type, address_type_name, company, title, last_name, first_name, middle_name, phone_1, phone_2, fax, address_1, address_2, city, state, country, zip, user_email, extra_field_1, extra_field_2, extra_field_3, extra_field_4, extra_field_5,bank_account_nr,bank_name,bank_sort_code,bank_iban,bank_account_holder,bank_account_type FROM #__{vm}_user_info WHERE user_id='".$auth['user_id']."' AND user_info_id='".$d['ship_to_info_id']."' AND address_type='ST'";
//$db->query( $q );

/**
* Insert all Products from the Cart into order line items;
* one row per product in the cart
*/
$dboi = new ps_DB;

// Берем данные о продавце
$q = "SELECT * FROM #__{vm}_vendor WHERE vendor_id = '".$_SESSION['ps_vendor_id']."'";
$db->query($q);
$db->next_record();
$vendor_email['subject'] = $db->f("vendor_name").'. Заказ от пользователя '.$checkout['name'].' [ '.$order_id.' ]';
$shopper_email['subject'] = 'Ваш заказ на сайте «'.$mosConfig_live_site.'» ['.$order_id.']';
$vendor_email['to'] = $shopper_email['from'] = $db->f("contact_email");
if( $checkout['email'] ){
$shopper_email['to'] = $vendor_email['from'] = $checkout['email'];
}
else {
$vendor_email['from'] ='lipoo.com.ua@gmail.com';
}

// Берем данные о покупателе
$vendor_email['message'] .= "Номер заказа: ".$order_id."\n";
$vendor_email['message'] .= "Данные о покупателе\n";
$vendor_email['message'] .= "————————————————--\n";
$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Телефон: ".$checkout['phone']."\n";
$vendor_email['message'] .= "Адрес: ".$checkout['address']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['delivery']."\n";
if( $checkout['email'] ) $vendor_email['message'] .= "Электронная почта: ".$checkout['email']."\n";
if( $checkout['comment'] ) $vendor_email['message'] .= "Комментарий к заказу: ".$checkout['comment']."\n";
$vendor_email['message'] .= "————————————————--\n\n";

$shopper_email['message'] = "Пожалуйста проверьте введёную информацию ниже и в случае ошибки свяжитесь с менеджером, указав уникальный номер заказа - [ ".$order_id." ]\n\n";
$shopper_email['message'] .= "Данные о продавце:\n";
$shopper_email['message'] .= "————————————————--\n";
if($db->f("contact_phone1")) $shopper_email['message'] .= "Телефон 1: ".$db->f("contact_phone1")."\n";
if($db->f("contact_phone2")) $shopper_email['message'] .= "Телефон 2: ".$db->f("contact_phone2")."\n";
if($db->f("contact_fax")) $shopper_email['message'] .= "Факс: ".$db->f("contact_fax")."\n";
$shopper_email['message'] .= "Электронная почта: ".$db->f("contact_email")."\n";
$shopper_email['message'] .= "Сайт: ".$db->f("vendor_url")."\n";
$shopper_email['message'] .= "————————————————--\n\n";

$message = "Данные о товарах:\n";
$message .= "————————————————--";
for($i = 0; $i < $cart["idx"]; $i++) {

$r = "SELECT product_id,product_in_stock,product_sales,product_parent_id,product_sku,product_name ";
$r .= "FROM #__{vm}_product WHERE product_id='".$cart[$i]["product_id"]."'";
$dboi->query($r);
$dboi->next_record();

$product_price_arr = $ps_product->get_adjusted_attribute_price($cart[$i]["product_id"], $cart[$i]["description"]);
$product_price = $product_price_arr["product_price"];

//if( empty( $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'] )) {
// $my_taxrate = $ps_product->get_product_taxrate($cart[$i]["product_id"] );
//}
//else {
// $my_taxrate = $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'];
//}
// Attribute handling
$product_parent_id = $dboi->f('product_parent_id');
$description = '';
if( $product_parent_id > 0 ) {

$db_atts = $ps_product->attribute_sql( $dboi->f('product_id'), $product_parent_id );
while( $db_atts->next_record()) {
$description .= $db_atts->f('attribute_name').': '.$db_atts->f('attribute_value').'; ';
}
}

$description .= $_SESSION['cart'][$i]["description"];

$product_final_price = round( ($product_price *($my_taxrate+1)), 2 );

$vendor_id = $db->f("vendor_id");

$product_currency = $product_price_arr["product_currency"];

$q = "INSERT INTO #__{vm}_order_item ";
$q .= "(order_id, user_info_id, vendor_id, product_id, order_item_sku, order_item_name, ";
$q .= "product_quantity, product_item_price, product_final_price, ";
$q .= "order_item_currency, order_status, product_attribute, cdate, mdate) ";
$q .= "VALUES ('";
$q .= $order_id . "', '";
$q .= $d["ship_to_info_id"] . "', '";
$q .= $vendor_id . "', '";
$q .= $cart[$i]["product_id"] . "', '";
$q .= addslashes($dboi->f("product_sku")) . "', '";
$q .= addslashes($dboi->f("product_name")) . "', '";
$q .= $cart[$i]["quantity"] . "', '";
$q .= $product_price . "', '";
$q .= $product_final_price . "', '";
$q .= $product_currency . "', ";
$q .= "'P','";
// added for advanced attribute storage
$q .= addslashes( $description ) . "', '";
// END advanced attribute modifications
$q .= $timestamp . "','";
$q .= $timestamp . "'";
$q .= ")";

$db->query($q);
$db->next_record();

// Берем данные о товарах
$message .= "\n";
$message .= $VM_LANG->_PHPSHOP_PRODUCT."Название: ";
if ($db->f("product_parent_id")) {
$message .= $dboi->f("order_item_name")."\n";
$message .= "SERVICE = ";
}
$message .= $dboi->f("product_name")."; ".$description."\n";
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_QUANTITY."Количество: ";
$message .= $cart[$i]['quantity']."\n";
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_SKU."Код товара: ";
$message .= $dboi->f("product_sku")."\n";

$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_PRICE."Цена: ";
$message .= $product_final_price;
$message .= "\n";

/* Update Stock Level and Product Sales */
if ($dboi->f("product_in_stock")) {
$q = "UPDATE #__{vm}_product ";
$q .= "SET product_in_stock = product_in_stock - ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '" . $cart[$i]["product_id"]. "'";
$db->query($q);
$db->next_record();
}

$q = "UPDATE #__{vm}_product ";
$q .= "SET product_sales = product_sales + ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '".$cart[$i]["product_id"]."'";
$db->query($q);
$db->next_record();

}

// DOWNLOAD MOD SKIPPED BECAUSE IT IS NOT REAL TO TRADE FILES WITHOUT PAYMENT

//if (AFFILIATE_ENABLE == '1') {
// $ps_affiliate->register_sale($order_id);
//}
// Export the order_id so the checkout complete page can get it
$d["order_id"] = $order_id;

// Now as everything else has been done, we can update
// the Order Status if the Payment Method is
// "Use Payment Processor", because:
// Payment Processors return false on any error
// Only completed payments return true!
//if( $enable_processor == "Y" ) {
// eval( "if( defined(\"".$_PAYMENT->payment_code."_VERIFIED_STATUS\")) {
// \$d['order_status'] = ".$_PAYMENT->payment_code."_VERIFIED_STATUS;
// \$update_order = true;
// }
// else
// \$update_order = false;" );
// if ( $update_order ) {
// require_once(CLASSPATH."ps_order.php");
// $ps_order =& new ps_order();
// $ps_order->order_status_update($d);
// }
//}

$message .= "————————————————--\n";
$message .= "Итого: ".$CURRENCY_DISPLAY->getFullValue($order_total)."\n";
$message .= "————————————————--\n";

$vendor_email['message'] .= $message;
$shopper_email['message'] .= $message;

// Отправка писем
vmMail($vendor_email['from'], $mosConfig_fromname, $vendor_email['to'], $vendor_email['subject'], $vendor_email['message'], false);

echo "<p>".nl2br($shopper_email['message'])."</p>";
if( $checkout['customer_copy'] == 1 ) {
vmMail($shopper_email['from'], $mosConfig_fromname, $shopper_email['to'], $shopper_email['subject'], $shopper_email['message'], false);
echo "Копия этого сообщения отправлена на адрес ".$shopper_email['to'];
}
else {
echo "Сохраните это сообщение, так как Вам не было отправлено уведомление.";
}

$ps_cart->reset();
unset($checkout);

// Подчищаем всякую хуйню
$d["payment_method_id"] = "";
$d["order_payment_number"] = "";
$d["order_payment_expire"] = "";
$d["order_payment_name"] = "";
$d["credit_card_code"] = "";
// Clear the sensitive Session data
$_SESSION['ccdata']['order_payment_name'] = "";
$_SESSION['ccdata']['order_payment_number'] = "";
$_SESSION['ccdata']['order_payment_expire_month'] = "";
$_SESSION['ccdata']['order_payment_expire_year'] = "";
$_SESSION['ccdata']['credit_card_code'] = "";
$_SESSION['coupon_discount'] = "";
$_SESSION['coupon_id'] = "";
$_SESSION['coupon_redeemed'] = false;

$_POST["payment_method_id"] = "";
$_POST["order_payment_number"] = "";
$_POST["order_payment_expire"] = "";
$_POST["order_payment_name"] = "";
}

?>

Link to comment
Share on other sites

  • 0

1. Вот через функцию vmGet происходит перенос массива checkout из POST

$checkout = vmGet($_REQUEST, 'checkout', '');

2. Вы не правильно создали форму для обработки запросов отправки на мыло функцией vmGet

HTML форма


<label for="oplata">Cпособ доставки:<br /></label>
<form method="POST">
<p><input type="radio" name="checkout[answer]" value="Курьерская доставка по Киеву">Курьерская доставка по Киеву<Br>
<input type="radio" name="checkout[answer]" value="Посылка Новой Почтой">Посылка Новой Почтой<Br>
<input type="radio" name="checkout[answer]" value="Посылка Укр Почта">Посылка Укр Почта<Br>
<input type="radio" name="checkout[answer]" value="Самовывоз в г.Киеве">Самовывоз в г.Киеве</p>
</form>

Если хотите писать в value как у вас было a1,a2.., то нужно будет в PHP добавить проверку данного параметра по каждому из пунктов и заменять их на человеко понятные фразы.

Теперь


$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['answer']."\n";

должно сработать

Link to comment
Share on other sites

  • 0

1. Вот через функцию vmGet происходит перенос массива checkout из POST

$checkout = vmGet($_REQUEST, 'checkout', '');

2. Вы не правильно создали форму для обработки запросов отправки на мыло функцией vmGet

HTML форма


<label for="oplata">Cпособ доставки:<br /></label>
<form method="POST">
<p><input type="radio" name="checkout[answer]" value="Курьерская доставка по Киеву">Курьерская доставка по Киеву<Br>
<input type="radio" name="checkout[answer]" value="Посылка Новой Почтой">Посылка Новой Почтой<Br>
<input type="radio" name="checkout[answer]" value="Посылка Укр Почта">Посылка Укр Почта<Br>
<input type="radio" name="checkout[answer]" value="Самовывоз в г.Киеве">Самовывоз в г.Киеве</p>
</form>

Если хотите писать в value как у вас было a1,a2.., то нужно будет в PHP добавить проверку данного параметра по каждому из пунктов и заменять их на человеко понятные фразы.

Теперь


$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['answer']."\n";

должно сработать

Ничего не изменилось( так же само выводится пустое поле.

Вот как данная форма выглядит:

1111_800.jpg

Edited by newjey
Link to comment
Share on other sites

  • 0

Спасибо, вы правы, так заработало.

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

Спасибо.

Link to comment
Share on other sites

  • 0

Всё работает и отправляется. Огромное вам спасибо.

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

1.jpg

Для наглядности привожу пример кода:

<?php 
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
//defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
/**
*
* @version $Id: checkout_without_register_form.php,v 1.0 2006/10/20 23:31 tug Exp $
* @package VirtueMart
* @subpackage html
* @copyright Copyright (C) 2004-2005 Soeren Eberhardt. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
!!!!!!!! ПОДСТАВИЛ В ПЕРЕМЕННУЮ$vendor_email['from'] ЛЕВОЕ ЗНАЧЕНИЕ И ТОГДА ОТПРАВЛЯЕТСЯ АДМИНУ НА МЫЛО ЕСЛИ НЕ ЮЗЕР НЕ ХОЧЕТ ОТПРАВЛЯТЬСЕБЕ!!!* is

*

See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/
mm_showMyFileName( __FILE__ );

$checkout = vmGet($_REQUEST, 'checkout', '');
$error = '';
if ( is_array($checkout) && count($checkout) ) {
require_once( CLASSPATH.'ps_main.php' );

if( $checkout['name'] == '' || vmValidateName($checkout['name']) == false ) {
$error .= '<p>Вы не указали имени контактного лица или указали неверно.</p>';
}

preg_replace('/\D/', '', $checkout['phone']);
if ( $checkout['phone'] == '' || strlen($checkout['phone']) < 6 ) {
$error .= '<p>Вы не указали контактного телефона или указали неверно.</p>';
}

if ( $checkout['address'] == '' || strlen($checkout['address']) < 8 ) {
$error .= '<p>Вы не указали свой адрес или указали неверно.</p>';
}

if ( function_exists('vmValidateEmail') ) {
$email_check = vmValidateEmail($checkout['email']);
}
else {
$email_check = mShop_validateEmail($checkout['email']);
}

if ( ($checkout['customer_copy'] == 1 && !$checkout['email']) || ($checkout['customer_copy'] == 1 && $email_check == false) ) {
$error .= '<p>Вы указали, что хотите получить копию заказа на свою электронную почту, но не указали адрес или указали неверно.</p>';
}
}

if ( !is_array($checkout) || !count($checkout) || !empty($error) ) {
?>

<table align="left" border="0" cellpadding="1" cellspacing="1" style="width: 800px; ">
<tbody>
<tr>
<td>
<form method="post" action="index.php" id="without_register_form">
<?php if($error) echo '<fieldset><legend>Ошибка</legend>'.$error.'</fieldset>'; ?>
<fieldset>
<legend class="sectiontableheader"><span style="color:#00008B;"><h1><i><b>Оформить заказ.</span></h1></i></b></legend><span style="color:#8B8989;">  Вам не нужно регистрироваться, чтобы совершить покупку в нашем магазине.</span></td>
</tr>
<tr>
<td>
<table align="left" border="0" cellpadding="1" cellspacing="1" style="width: 800px; ">
<tbody>
<tr>
<td align="left">
<span style="color:#00008B;"><label for="oplata">Контактная информация:</span><br /></td>
<td align="left">
<span style="color:#00008B;"><label for="oplata">Cпособ доставки:</span><br /></label>

</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table align="left" border="0" cellpadding="1" cellspacing="1" style="width: 800px; ">
<tbody>
<tr>
<td nowrap>
<label for="name">Контактное лицо*: <br /></label>
<input id="name" name="checkout[name]" value="<?php if ( $checkout ) echo $checkout['name']; ?>" class="inputbox" /><br />

<label for="phone">Телефон*: <br /></label>
<input id="phone" name="checkout[phone]" value="<?php if ( $checkout ) echo $checkout['phone']; ?>" class="inputbox" /><br />

<label for="phone">Адрес*: <br /></label>
<input id="phone" name="checkout[address]" value="<?php if ( $checkout ) echo $checkout['address']; ?>" class="inputbox" /><br />

<label for="email">E-mail: <br /></label>
<input id="email" name="checkout[email]" value="<?php if ( $checkout ) echo $checkout['email']; ?>" class="inputbox" /><br />

<?php $selected = 'selected="selected"'; ?>
<label for="email">Отправить вам копию? <br /></label>
<select id="email" name="checkout[customer_copy]" class="inputbox" />
<optgroup>

<option value="1" <?php if( $checkout && $checkout['customer_copy'] == 1 ) echo $selected; ?>>Да</option>
<option value="0" <?php if( !$checkout || $checkout['customer_copy'] != 1 ) echo $selected; ?>>Нет</option>
</optgroup>
</select>
<br />

<label for="comment">Комментарий: <br /></label>
<textarea id="comment" name="checkout[comment]" class="inputbox"><?php if ( $checkout ) echo $checkout['comment']; ?></textarea><br /></td>
<td>
<p><input type="radio" name="checkout[answer]" value="Курьерская доставка по Киеву">Курьерская доставка по Киеву<br />
<input type="radio" name="checkout[answer]" value="Посылка Новой Почтой">Посылка Новой Почтой<br />
<input type="radio" name="checkout[answer]" value="Посылка Укр Почта">Посылка Укр Почта<br />
<input type="radio" name="checkout[answer]" value="Самовывоз в г.Киеве">Самовывоз в г.Киеве<br />
</td> </tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<div id="submit_wrap">
<input type="submit" value="Отправить" class="button" style="width:auto;text-align:center" />
</div>

<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="checkout.without_register_form" />
</fieldset>
</form></td>
</tr>
</tbody>
</table>
<style>
<!--
#without_register_form {
font-size: 1em; /* размер шрифта формы */
}

#without_register_form fieldset {
/*width: 35em; /* рамка вокруг формы */
border: solid 1px #333; /* нормальная граница рамки */
}

#without_register_form legend {
}

#without_register_form label {
float: left; /* подписи к полям сдвигаются влево */
width: 15em; /* ширина колонки подписей */
line-height: 1em;
margin-right: 0.1em; /* отступ до поля ввода */
text-align: right;
}

#without_register_form input, #without_register_form select, #without_register_form textarea {
margin: 0 0 0.5em 0.2em;
width: 20em; /* ширина полей формы */
padding: 0;
/* делаем одинаковый шрифт для input, select, textarea */
font-family: Verdana, sans-serif;
font-size: 100%;
}

#without_register_form .noresize {
width:auto; /* для кнопок, переключателей */
}

#without_register_form .submit {
/* сдвигаем кнопку отправки */
/*margin-left:;*/
text-align: right;
}

#without_register_form #submit_wrap {
text-align: center;
margin-right:0.2em;
}
-->
</style>

<?php
}

else {
global $cart, $sess, $VM_LANG, $CURRENCY_DISPLAY;

// Проверяем чтобы был хотябы один товар.
if( $cart['idx']!=0 ) vmRedirect('index.php?option=com_virtuemart');


$ps_vendor_id = $_SESSION["ps_vendor_id"];
require_once(CLASSPATH. 'ps_checkout.php' );
$ps_checkout = new ps_checkout;
require_once(CLASSPATH. 'ps_product.php' );
$ps_product = new ps_product;
require_once(CLASSPATH.'ps_cart.php');
$ps_cart = new ps_cart;

$db = new ps_DB;

//if (AFFILIATE_ENABLE == '1') {
// require_once(CLASSPATH.'ps_affiliate.php');
// $ps_affiliate = new ps_affiliate;
//}

/* Генерим уникальный номер заказа в системе VM */
$order_number = $ps_checkout->get_order_number();

/* Подсчитываем примерную общую стоимость без учёта налогов и доставки */
$order_subtotal = $tmp_subtotal = $ps_checkout->calc_order_subtotal($d);

//$order_taxable = $ps_checkout->calc_order_taxable($d);
//$payment_discount = $d['payment_discount'] = $this->get_payment_discount($d['payment_method_id'], $order_subtotal);

/* DISCOUNT HANDLING */
if( !empty($_SESSION['coupon_discount']) ) {
$coupon_discount = floatval($_SESSION['coupon_discount']);
}
else {
$coupon_discount = 0.00;
}

// from now on we have $order_tax_details
//$d['order_tax'] = $order_tax = round( $this->calc_order_tax($order_taxable, $d), 2 );

// Проверяем чтобы сумма заказа не ушла в минус
if( $tmp_subtotal < 0 ) $order_subtotal = $tmp_subtotal = 0;
//if( $order_taxable < 0 ) $order_taxable = 0;

// from now on we have $order_tax_details
//$d['order_tax'] = $order_tax = round( $ps_checkout->calc_order_tax($order_taxable, $d), 2 );
//if( $this->_SHIPPING ) {
/* sets _shipping */
// $d['order_shipping'] = $order_shipping = round( $this->calc_order_shipping( $d ), 2 );

/* sets _shipping_tax
* btw: This is WEIRD! To get an exactly rounded value we have to convert
* the amount to a String and call "round" with the string. */
// $d['order_shipping_tax'] = $order_shipping_tax = round( strval($this->calc_order_shipping_tax($d)), 2 );

//$shipping_taxrate = $this->_SHIPPING->get_tax_rate();
//@$order_tax_details[$shipping_taxrate] += $order_shipping_tax;
//}
//else {
// $d['order_shipping'] = $order_shipping = $order_shipping_tax = $d['order_shipping_tax'] = 0.00;
//}

$timestamp = time() + ($mosConfig_offset*60*60);

// Вычисление итоговой суммы превращается в вычитании из предположительной суммы скидки по купону
$d['order_total'] = $order_total = $tmp_subtotal
/*+ $order_tax */
/*+ $order_shipping */
/*+ $order_shipping_tax*/
- $coupon_discount
/*- $payment_discount*/;

//$order_tax *= $discount_factor;

//if (!$this->validate_form($d)) {
// return false;
//}

//if (!$this->validate_add($d)) {
// return false;
//}

// Проверяем на отрицательное значение итоговую сумму заказа
if( $order_total < 0 ) $order_total = 0;

// Округляем итоговую сумму заказа до второго знака после запятой
$order_total = round( $order_total, 2);

// Пишем в лог отладочную информацию
$vmLogger->debug( '-- Checkout Debug--
Subtotal: '.$order_subtotal.'
Coupon Discount: '.$coupon_discount.'
————————
Order Total: '.$order_total.'
—————————-'
);

// Check to see if Payment Class File exists
//$payment_class = $ps_payment_method->get_field($d["payment_method_id"], "payment_class");
//$enable_processor = $ps_payment_method->get_field($d["payment_method_id"], "enable_processor");

//if (file_exists(CLASSPATH . "payment/$payment_class.php") ) {
// if( !class_exists( $payment_class ))
// include( CLASSPATH. "payment/$payment_class.php" );

// eval( "\$_PAYMENT = new $payment_class();" );
// if (!$_PAYMENT->process_payment($order_number,$order_total, $d)) {
// $vmLogger->err( $VM_LANG->_PHPSHOP_PAYMENT_ERROR." ($payment_class)" );
// $_SESSION['last_page'] = "checkout.index";
// $_REQUEST["checkout_next_step"] = CHECK_OUT_GET_PAYMENT_METHOD;
// return False;
// }
//}

//else {
// $d["order_payment_log"] = $VM_LANG->_PHPSHOP_CHECKOUT_MSG_LOG;
//}

// Если купон был подарочным, то мы его удаляем
if( @$_SESSION['coupon_type'] == "gift" ) {
$d['coupon_id'] = $_SESSION['coupon_id'];
include_once( CLASSPATH.'ps_coupon.php' );
ps_coupon::remove_coupon_code( $d );
}

// Получаем IP
if (!empty($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
else {
$ip = 'unknown';
}

/* 1.0.9
`order_id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL default '0',
`vendor_id` int(11) NOT NULL default '0',
`order_number` varchar(32) default NULL,
`user_info_id` varchar(32) default NULL,
`order_total` decimal(10,2) NOT NULL default '0.00',
`order_subtotal` decimal(10,5) default NULL,
`order_tax` decimal(10,2) default NULL,
`order_shipping` decimal(10,2) default NULL,
`order_shipping_tax` decimal(10,2) default NULL,
`coupon_discount` decimal(10,2) NOT NULL default '0.00',
`order_discount` decimal(10,2) NOT NULL default '0.00',
`order_currency` varchar(16) default NULL,
`order_status` char(1) default NULL,
`cdate` int(11) default NULL,
`mdate` int(11) default NULL,
`ship_method_id` varchar(255) default NULL,
`customer_note` text NOT NULL,
`ip_address` varchar(15) NOT NULL default '',
*/
/* Добавляем в базу основную информацию о заказе */
$q = "INSERT INTO #__{vm}_orders ";
$q .= "(user_id, vendor_id, order_number, user_info_id, ship_method_id, order_total, order_subtotal, order_tax, order_shipping, order_shipping_tax, order_discount, coupon_discount, order_currency, order_status, cdate, mdate, customer_note, ip_address) ";
$q .= "VALUES ( 0, ".$ps_vendor_id.", '".$order_number."', '".$d["ship_to_info_id"]."', '', '".$order_total."', '".$order_subtotal."', '".$order_tax."', '".$order_shipping."', '".$order_shipping_tax."', '".$payment_discount."', '".$coupon_discount."', '".$_SESSION['vendor_currency']."', 'P', '".$timestamp."', '".$timestamp."', '".addslashes(htmlspecialchars(strip_tags($checkout['comment'])))."', '".$ip."');";

$db->query($q);
$db->next_record();

/* Берем порядковый номер только что добавленного заказа */
$q = "SELECT order_id FROM #__{vm}_orders WHERE order_number = ";
$q .= "'" . $order_number . "'";

$db->query($q);
$db->next_record();

$d["order_id"] = $order_id = $db->f("order_id");

/**
* Создаём историю заказа.
*/
$mysqlDatetime = date("Y-m-d G:i:s", $timestamp);

$q = "INSERT INTO #__{vm}_order_history ";
$q .= "(order_id,order_status_code,date_added,customer_notified,comments) VALUES (";
$q .= "'$order_id', 'P', '" . $mysqlDatetime . "', 1, '')";
$db->query($q);

/**
* Insert the Order payment info
*/
//$payment_number = ereg_replace(" |-", "", @$_SESSION['ccdata']['order_payment_number']);

//$d["order_payment_code"] = @$_SESSION['ccdata']['credit_card_code'];

// Payment number is encrypted using mySQL ENCODE function.
//$q = "INSERT INTO #__{vm}_order_payment ";
//$q .= "(order_id, order_payment_code, payment_method_id, order_payment_number, ";
//$q .= "order_payment_expire, order_payment_log, order_payment_name, order_payment_trans_id) ";
//$q .= "VALUES ('$order_id', ";
//$q .= "'" . $d["order_payment_code"] . "', ";
//$q .= "'" . $d["payment_method_id"] . "', ";
//$q .= "ENCODE(\"$payment_number\",\"" . ENCODE_KEY . "\"), ";
//$q .= "'" . @$_SESSION["ccdata"]["order_payment_expire"] . "',";
//$q .= "'" . @$d["order_payment_log"] . "',";
//$q .= "'" . @$_SESSION["ccdata"]["order_payment_name"] . "',";
//$q .= "'" . $vmInputFilter->safeSQL( @$d["order_payment_trans_id"] ). "'";
//$q .= ")";
//$db->query($q);
//$db->next_record();

/**
* Вставляем информацию о адресах пользователя и покупателя. Т.к. у нас их нет, то пишем что-нить
* Вообще это очень важная хуйня, т.к. без неё заказы не отображаются в админке
*/
// Bill To Address
$q = "INSERT INTO `#__{vm}_order_user_info` (order_info_id, order_id, user_id, address_type, address_type_name, company, title, last_name, first_name, middle_name, phone_1, phone_2, fax, address_1, address_2, city, state, country, zip, user_email, extra_field_1, extra_field_2, extra_field_3, extra_field_4, extra_field_5, bank_account_nr, bank_name, bank_sort_code, bank_iban, bank_account_holder, bank_account_type) ";
$q .= "VALUES ('', '".$order_id."', 0, 'BT', '-default-', '', '', '', '".$checkout['name']."', '', '".$checkout['phone']."', '', '', '".$checkout['address']."', '', '', '', '', '', '".$checkout['email']."', '', '', '', '', '', '', '', '', '', '', '') ";
$db->query( $q );

// Ship to Address if applicable
//$q = "INSERT INTO `#__{vm}_order_user_info` ";
//$q .= "SELECT '', '$order_id', '".$auth['user_id']."', address_type, address_type_name, company, title, last_name, first_name, middle_name, phone_1, phone_2, fax, address_1, address_2, city, state, country, zip, user_email, extra_field_1, extra_field_2, extra_field_3, extra_field_4, extra_field_5,bank_account_nr,bank_name,bank_sort_code,bank_iban,bank_account_holder,bank_account_type FROM #__{vm}_user_info WHERE user_id='".$auth['user_id']."' AND user_info_id='".$d['ship_to_info_id']."' AND address_type='ST'";
//$db->query( $q );

/**
* Insert all Products from the Cart into order line items;
* one row per product in the cart
*/
$dboi = new ps_DB;

// Берем данные о продавце
$q = "SELECT * FROM #__{vm}_vendor WHERE vendor_id = '".$_SESSION['ps_vendor_id']."'";
$db->query($q);
$db->next_record();
$vendor_email['subject'] = $db->f("vendor_name").'. Новый заказ от незарегестрированного пользователя '.$checkout['name'].' ['.$order_id.']';
$shopper_email['subject'] = 'Ваш заказ на сайте «'.$mosConfig_live_site.'» ['.$order_id.']';
$vendor_email['to'] = $shopper_email['from'] = $db->f("contact_email");
if( $checkout['email'] ){
$shopper_email['to'] = $vendor_email['from'] = $checkout['email'];
}
else {
$vendor_email['from'] ='впишите мыло магазина';
}

// Берем данные о покупателе
$vendor_email['message'] .= "Номер заказа: ".$order_id."\n";
$vendor_email['message'] .= "Данные о покупателе\n";
$vendor_email['message'] .= "————————————————--\n";
$vendor_email['message'] .= "Имя: ".$checkout['name']."\n";
$vendor_email['message'] .= "Телефон: ".$checkout['phone']."\n";
$vendor_email['message'] .= "Адрес: ".$checkout['address']."\n";
$vendor_email['message'] .= "Способ доставки: ".$checkout['answer']."\n";
if( $checkout['email'] ) $vendor_email['message'] .= "Электронная почта: ".$checkout['email']."\n";
if( $checkout['comment'] ) $vendor_email['message'] .= "Комментарий к заказу: ".$checkout['comment']."\n";
$vendor_email['message'] .= "————————————————--\n\n";

$shopper_email['message'] = "Уважаемый покупатель, пожалуйста проверьте информацию ниже и в случае ошибки свяжитесь с продавцом, указав уникальный номер заказа - [".$order_id."]\n\n";
$shopper_email['message'] .= "Данные о продавце\n";
$shopper_email['message'] .= "————————————————--\n";
if($db->f("contact_phone1")) $shopper_email['message'] .= "Телефон 1: ".$db->f("contact_phone1")."\n";
if($db->f("contact_phone2")) $shopper_email['message'] .= "Телефон 2: ".$db->f("contact_phone2")."\n";
if($db->f("contact_fax")) $shopper_email['message'] .= "Факс: ".$db->f("contact_fax")."\n";
$shopper_email['message'] .= "Электронная почта: ".$db->f("contact_email")."\n";
$shopper_email['message'] .= "Сайт: ".$db->f("vendor_url")."\n";
$shopper_email['message'] .= "————————————————--\n\n";

$message = "Данные о товарах\n";
$message .= "————————————————--";
for($i = 0; $i < $cart["idx"]; $i++) {

$r = "SELECT product_id,product_in_stock,product_sales,product_parent_id,product_sku,product_name ";
$r .= "FROM #__{vm}_product WHERE product_id='".$cart[$i]["product_id"]."'";
$dboi->query($r);
$dboi->next_record();

$product_price_arr = $ps_product->get_adjusted_attribute_price($cart[$i]["product_id"], $cart[$i]["description"]);
$product_price = $product_price_arr["product_price"];

//if( empty( $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'] )) {
// $my_taxrate = $ps_product->get_product_taxrate($cart[$i]["product_id"] );
//}
//else {
// $my_taxrate = $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'];
//}
// Attribute handling
$product_parent_id = $dboi->f('product_parent_id');
$description = '';
if( $product_parent_id > 0 ) {

$db_atts = $ps_product->attribute_sql( $dboi->f('product_id'), $product_parent_id );
while( $db_atts->next_record()) {
$description .= $db_atts->f('attribute_name').': '.$db_atts->f('attribute_value').'; ';
}
}

$description .= $_SESSION['cart'][$i]["description"];

$product_final_price = round( ($product_price *($my_taxrate+1)), 2 );

$vendor_id = $db->f("vendor_id");

$product_currency = $product_price_arr["product_currency"];

$q = "INSERT INTO #__{vm}_order_item ";
$q .= "(order_id, user_info_id, vendor_id, product_id, order_item_sku, order_item_name, ";
$q .= "product_quantity, product_item_price, product_final_price, ";
$q .= "order_item_currency, order_status, product_attribute, cdate, mdate) ";
$q .= "VALUES ('";
$q .= $order_id . "', '";
$q .= $d["ship_to_info_id"] . "', '";
$q .= $vendor_id . "', '";
$q .= $cart[$i]["product_id"] . "', '";
$q .= addslashes($dboi->f("product_sku")) . "', '";
$q .= addslashes($dboi->f("product_name")) . "', '";
$q .= $cart[$i]["quantity"] . "', '";
$q .= $product_price . "', '";
$q .= $product_final_price . "', '";
$q .= $product_currency . "', ";
$q .= "'P','";
// added for advanced attribute storage
$q .= addslashes( $description ) . "', '";
// END advanced attribute modifications
$q .= $timestamp . "','";
$q .= $timestamp . "'";
$q .= ")";

$db->query($q);
$db->next_record();

// Берем данные о товарах
$message .= "\n";
$message .= $VM_LANG->_PHPSHOP_PRODUCT.": ";
if ($db->f("product_parent_id")) {
$message .= $dboi->f("order_item_name")."\n";
$message .= "SERVICE = ";
}
$message .= $dboi->f("product_name")."; ".$description."\n";
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_QUANTITY.": ";
$message .= $cart[$i]['quantity']."\n";
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_SKU.": ";
$message .= $dboi->f("product_sku")."\n";

$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_PRICE.": ";
$message .= $product_final_price;
$message .= "\n";

/* Update Stock Level and Product Sales */
if ($dboi->f("product_in_stock")) {
$q = "UPDATE #__{vm}_product ";
$q .= "SET product_in_stock = product_in_stock - ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '" . $cart[$i]["product_id"]. "'";
$db->query($q);
$db->next_record();
}

$q = "UPDATE #__{vm}_product ";
$q .= "SET product_sales = product_sales + ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '".$cart[$i]["product_id"]."'";
$db->query($q);
$db->next_record();

}

// DOWNLOAD MOD SKIPPED BECAUSE IT IS NOT REAL TO TRADE FILES WITHOUT PAYMENT

//if (AFFILIATE_ENABLE == '1') {
// $ps_affiliate->register_sale($order_id);
//}
// Export the order_id so the checkout complete page can get it
$d["order_id"] = $order_id;

// Now as everything else has been done, we can update
// the Order Status if the Payment Method is
// "Use Payment Processor", because:
// Payment Processors return false on any error
// Only completed payments return true!
//if( $enable_processor == "Y" ) {
// eval( "if( defined(\"".$_PAYMENT->payment_code."_VERIFIED_STATUS\")) {
// \$d['order_status'] = ".$_PAYMENT->payment_code."_VERIFIED_STATUS;
// \$update_order = true;
// }
// else
// \$update_order = false;" );
// if ( $update_order ) {
// require_once(CLASSPATH."ps_order.php");
// $ps_order =& new ps_order();
// $ps_order->order_status_update($d);
// }
//}

$message .= "————————————————--\n";
$message .= "Итого: ".$CURRENCY_DISPLAY->getFullValue($order_total)."\n";
$message .= "————————————————--\n";

$vendor_email['message'] .= $message;
$shopper_email['message'] .= $message;

// Отправка писем
vmMail($vendor_email['from'], $mosConfig_fromname, $vendor_email['to'], $vendor_email['subject'], $vendor_email['message'], false);

echo "<p>".nl2br($shopper_email['message'])."</p>";
if( $checkout['customer_copy'] == 1 ) {
vmMail($shopper_email['from'], $mosConfig_fromname, $shopper_email['to'], $shopper_email['subject'], $shopper_email['message'], false);
echo "Копия этого сообщения отправлена на адрес ".$shopper_email['to'];
}
else {
echo "Сохраните это сообщение, так как Вам не было отправлено уведомление.";
}

$ps_cart->reset();
unset($checkout);

// Подчищаем всякую хуйню
$d["payment_method_id"] = "";
$d["order_payment_number"] = "";
$d["order_payment_expire"] = "";
$d["order_payment_name"] = "";
$d["credit_card_code"] = "";
// Clear the sensitive Session data
$_SESSION['ccdata']['order_payment_name'] = "";
$_SESSION['ccdata']['order_payment_number'] = "";
$_SESSION['ccdata']['order_payment_expire_month'] = "";
$_SESSION['ccdata']['order_payment_expire_year'] = "";
$_SESSION['ccdata']['credit_card_code'] = "";
$_SESSION['coupon_discount'] = "";
$_SESSION['coupon_id'] = "";
$_SESSION['coupon_redeemed'] = false;

$_POST["payment_method_id"] = "";
$_POST["order_payment_number"] = "";
$_POST["order_payment_expire"] = "";
$_POST["order_payment_name"] = "";
}

?>

Вроде всё правильно, но мало ли.

Link to comment
Share on other sites

  • 0

<td>
<p><input type="radio" name="checkout[answer]" value="Курьерская доставка по Киеву">Курьерская доставка по Киеву<br />
<input type="radio" name="checkout[answer]" value="Посылка Новой Почтой">Посылка Новой Почтой<br />
<input type="radio" name="checkout[answer]" value="Посылка Укр Почта">Посылка Укр Почта<br />
<input type="radio" name="checkout[answer]" value="Самовывоз в г.Киеве">Самовывоз в г.Киеве<br />
</td>

Нет закрывающего тега </p>, может в этом проблема.

Link to comment
Share on other sites

  • 0

<td>
<p><input type="radio" name="checkout[answer]" value="Курьерская доставка по Киеву">Курьерская доставка по Киеву<br />
<input type="radio" name="checkout[answer]" value="Посылка Новой Почтой">Посылка Новой Почтой<br />
<input type="radio" name="checkout[answer]" value="Посылка Укр Почта">Посылка Укр Почта<br />
<input type="radio" name="checkout[answer]" value="Самовывоз в г.Киеве">Самовывоз в г.Киеве<br />
</td>

Нет закрывающего тега </p>, может в этом проблема.

И с ним и без него так же само.

Link to comment
Share on other sites

  • 0

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

<form method="post" action="index.php" id="without_register_form">
<?php if($error) echo '<fieldset><legend>Ошибка</legend>'.$error.'</fieldset>'; ?>
<fieldset>
<legend class="sectiontableheader"><span style="color:#00008B;"><h1><i><b>Оформить заказ.</span></h1></i></b></legend><span style="color:#8B8989;">  Вам не нужно регистрироваться, чтобы совершить покупку в нашем магазине.</span><br /><br />
<span style="color:black;">  Обязательные поля для заполнения отмечены звёздочкой<font color="red" size="3" > *</font></span><br /><br />
<span style="color:#000080;"><label for="name">Контактное лицо<font color="red"> *</font>    <br /></label></span>
<input id="name" name="checkout[name]" value="<?php if ( $checkout ) echo $checkout['name']; ?>" class="inputbox" /><br />

<span style="color:#000080;"><label for="phone">Телефон<font color="red"> *</font>    <br /></label></span>
<input id="phone" name="checkout[phone]" value="<?php if ( $checkout ) echo $checkout['phone']; ?>" class="inputbox" /><br />

<span style="color:#000080;"><label for="phone">Адрес<font color="red"> *</font>    <br /></label></span>
<input id="phone" name="checkout[address]" value="<?php if ( $checkout ) echo $checkout['address']; ?>" class="inputbox" /><br />

<span style="color:#000080;"><label for="email">E-mail    <br /></label></span>
<input id="email" name="checkout[email]" value="<?php if ( $checkout ) echo $checkout['email']; ?>" class="inputbox" /><br />

<?php $selected = 'selected="selected"'; ?>
<span style="color:#000080;"><label for="email">Отправить вам копию?    <br /></label></span>
<select id="email" name="checkout[customer_copy]" class="inputbox" />
<optgroup>

<option value="1" <?php if( $checkout && $checkout['customer_copy'] == 1 ) echo $selected; ?>>Да</option>
<option value="0" <?php if( !$checkout || $checkout['customer_copy'] != 1 ) echo $selected; ?>>Нет</option>
</optgroup>
</select>
<br />
<span style="color:#000080;"><label for="comment">Комментарий    <br /></label></span>
<textarea id="comment" name="checkout[comment]" class="inputbox"><?php if ( $checkout ) echo $checkout['comment']; ?></textarea><br /></div>
<label for="oplata">Cпособ доставки:<br /></label>
<p><input type="radio" name="checkout[answer]" value="Курьерская доставка по Киеву"><span style="color:#000080;">Курьерская доставка по Киеву</span><br />
<input type="radio" name="checkout[answer]" value="Посылка Новой Почтой"><span style="color:#000080;">Посылка Новой Почтой</span><br />
<input type="radio" name="checkout[answer]" value="Посылка Укр Почта"><span style="color:#000080;">Посылка Укр Почта</span><br />
<input type="radio" name="checkout[answer]" value="Самовывоз в г.Киеве"><span style="color:#000080;">Самовывоз в г.Киеве</span><br /></p>
<div id="submit_wrap">
<input type="submit" value="Отправить" class="button" style="width:auto;text-align:center" />
</div>
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="checkout.without_register_form" />
</fieldset>
</form>

Как же правильно вставить:

<label for="oplata">Cпособ доставки:<br /></label>
<p><input type="radio" name="checkout[answer]" value="Курьерская доставка по Киеву"><span style="color:#000080;">Курьерская доставка по Киеву</span><br />
<input type="radio" name="checkout[answer]" value="Посылка Новой Почтой"><span style="color:#000080;">Посылка Новой Почтой</span><br />
<input type="radio" name="checkout[answer]" value="Посылка Укр Почта"><span style="color:#000080;">Посылка Укр Почта</span><br />
<input type="radio" name="checkout[answer]" value="Самовывоз в г.Киеве"><span style="color:#000080;">Самовывоз в г.Киеве</span><br /></p>

Спасибо.

Link to comment
Share on other sites

  • 0

Сделайте валидацию HTML-кода (не php) страницы здесь - http://validator.w3.org/ - и исправьте все ошибки. Если проблемы остануться, выкладывайте ссылку на страницу, а не php-код.

Валидатором не получится проверить так как страница корзины не формирует адрес.Посмотреть вы можете по ссылке _http://lipoo.com.ua положите товар в корзине в Internet Explorer

Link to comment
Share on other sites

  • 0

Сделайте валидацию HTML-кода (не php) страницы здесь - http://validator.w3.org/ - и исправьте все ошибки. Если проблемы остануться, выкладывайте ссылку на страницу, а не php-код.

Валидатором не получится проверить так как страница корзины не формирует адрес.Посмотреть вы можете по ссылке _http://lipoo.com.ua положите товар в корзине в Internet Explorer

Вот сюда - http://validator.w3.org/#validate_by_input - вставляете код страницы и проверяете.

Link to comment
Share on other sites

  • 0

Сделайте валидацию HTML-кода (не php) страницы здесь - http://validator.w3.org/ - и исправьте все ошибки. Если проблемы остануться, выкладывайте ссылку на страницу, а не php-код.

Валидатором не получится проверить так как страница корзины не формирует адрес.Посмотреть вы можете по ссылке _http://lipoo.com.ua положите товар в корзине в Internet Explorer

Вот сюда - http://validator.w3.org/#validate_by_input - вставляете код страницы и проверяете.

Спасибо, много раз пользовался валидатором, но это почему-то не заметил.

В коде есть вот такая ошибка,которая касается формы:

Line 48, Column 66: document type does not allow element "FORM" here

<form method="post" action="index.php" id="without_register_form"/>

?

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).

Не могу разобраться с ней.

Edited by newjey
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy