29.10.2017, 16:28
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
По другому не вижу как...
Фактически так уже реализовал.
HTML
<textarea name="outtext" id="outtext"></textarea>
Для проверки пока только с теми переменными, что уже есть
JS
document.getElementById("outtext").value =
(
"Стоимость пленки: " + sp +
"\nСтоимость проектора: " + pp +
"\nСтоимость лазера: " + lp +
"\nСтоимость WUXGA: " + w +
"\nИсточник: " + ip +
"\nКоммутация: " + cp +
"\nКрепление: " + kp +
"\nМонтаж: " + m
);
PHP
$outtext = $_POST['outtext'];
$mail->Body = "$outtext"; // Текст письма
И все отлично отправляется на почту. Только есть одна проблема.
В textarea текст переносится на новую строчку.
При отправке на почту - переносы не учитываются и информация приходит одной строкой, что не совсем читабельно...
|
|
29.10.2017, 16:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Что значит "Монтаж: " + m?
|
|
29.10.2017, 16:33
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от the_little
|
При отправке на почту - переносы не учитываются и информация приходит одной строкой, что не совсем читабельно...
|
Потому, что html игнорирует переводы строк, в html перевод это <br>. А истинные джентльмены отправляют почту двумя ее копиями в одном письме, одна это html-версия, вторая как текст. Вы откуда можете знать какие версии писем предпочитает получать адресат, если только он об этом не сообщает? А не зная этого, слать ему html версию, это самоуверенность, а пользователь такое письмо может видеть как мусор.
|
|
29.10.2017, 16:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от the_little
|
По другому не вижу как...
|
Это потому, что у вас нет понятий об организации данных на сервере и что данные извне сервер обязан проверять.
|
|
29.10.2017, 16:46
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Сообщение от laimas
|
Что значит "Монтаж: " + m?
|
После заполнения формы пользователь видит расчет стоимости оборудования.
На почту он получит
список оборудования с его стоимостью.
В конкретном случае стоимость монтажа.
Только я сделаю переменные, которые переведут value 1 2 3 в текстовый вид, Например возвращаясь к тому же монтажу
Будет написано например так:
Монтаж под ключ в Москве или Московской области.
Стоимость монтажа - 20000р.
Ну и далее...
Тип проектора - Ламповый "День".
Стоимость проектора - 120000р.
Общая стоимость 140000р.
|
|
29.10.2017, 16:47
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Сообщение от laimas
|
Это потому, что у вас нет понятий об организации данных на сервере и что данные извне сервер обязан проверять.
|
Тут не поспоришь...
Я совсем недавно начал изучать Javascript.
Ну и познаний серверной части у меня тоже нет...
|
|
29.10.2017, 16:50
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Сообщение от laimas
|
Потому, что html игнорирует переводы строк, в html перевод это <br>. А истинные джентльмены отправляют почту двумя ее копиями в одном письме, одна это html-версия, вторая как текст. Вы откуда можете знать какие версии писем предпочитает получать адресат, если только он об этом не сообщает? А не зная этого, слать ему html версию, это самоуверенность, а пользователь такое письмо может видеть как мусор.
|
Если честно я об этом даже не задумывался.
Я использую достаточно известный и распространенный PHPMailer, который как я понимаю должен заботиться о таких вещах и отправлять любыми джентльменскими способами...
|
|
29.10.2017, 17:07
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от the_little
|
В конкретном случае стоимость монтажа.
|
Ну если стоимость монтажа, то почему в тело письма вставляется на "Монтаж: 20000 руб.", "Монтаж: m"?
Ваш подход к тому, что вы делаете, по крайней мере то, что показано здесь, это идти по пути "кажущегося" наименьшего сопротивления.
Это кроет в себе массу проблем в будущем, с которыми вы еще столкнетесь.
|
|
29.10.2017, 17:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от the_little
|
Я использую достаточно известный и распространенный PHPMailer, который как я понимаю должен заботиться о таких вещах
|
Этот класс просто отправляет почту которую формируете вы, вы же определяете настройки класса, в том числе и тип почтового отправления. В сети этот класс описан, найдите и ознакомтесь с ним.
|
|
29.10.2017, 18:02
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Сообщение от laimas
|
Ну если стоимость монтажа, то почему в тело письма вставляется на "Монтаж: 20000 руб.", "Монтаж: m"?
Ваш подход к тому, что вы делаете, по крайней мере то, что показано здесь, это идти по пути "кажущегося" наименьшего сопротивления.
Это кроет в себе массу проблем в будущем, с которыми вы еще столкнетесь.
|
Так эта величина 20000 руб. считается в калькуляторе. В зависимости от выбранных полей пользователем. Если бы я ее заранее знал - я бы ее и отправил)
function check() {
// Определяем выбранный бюджет
var inp = document.getElementsByName('budjet');
for (var i = 0; i < inp.length; i++) {
if (inp[i].type == "radio" && inp[i].checked) {
var b = inp[i].value;
}
}
// Определяем выбранный размер
var selsize = document.getElementById("size"); // Получаем наш список
var size = selsize.options[selsize.selectedIndex].value;
// Определяем выбранный тип проектора
var selprojsm = document.getElementById("proj_sm"); // Получаем наш список
var psmt = selprojsm.options[selprojsm.selectedIndex].value;
var selprojmid = document.getElementById("proj_mid"); // Получаем наш список
var pmidt = selprojmid.options[selprojmid.selectedIndex].value;
var selprojlg = document.getElementById("proj_lg"); // Получаем наш список
var plgt = selprojlg.options[selprojlg.selectedIndex].value;
var arrsp = [
[ 0, 0, 0], // Размер не выбран
[ 3500, 11000, 90000], // Размер 1500х1000 мм
[ 7000, 22000, 120000], // Размер 2000х1500 мм
[ 15000, 44000, 360000] // Размер 3000х2200 мм
];
var sp = arrsp[size][b];
var arrpp = [
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 35000, 80000, 130000], // Размер 1500х1000 мм
[ 0, 80000, 160000, 250000], // Размер 2000х1500 мм
[ 0, 130000, 250000, 370000] // Размер 3000х2200 мм
];
if (size == 1) {
var pp = arrpp[size][psmt];
}
if (size == 2) {
var pp = arrpp[size][pmidt];
}
if (size == 3) {
var pp = arrpp[size][plgt];
}
if (size == 0) {
var pp = 0;
}
// Определяем выбран ли лазерный проектор
var laz = document.getElementsByName('lazer');
for (var i = 0; i < laz.length; i++) {
if (laz[i].type == "radio" && laz[i].checked) {
var l = laz[i].value;
}
}
var arrlp = [
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 200000, 400000, 800000], // Размер 1500х1000 мм
[ 0, 200000, 400000, 1300000], // Размер 2000х1500 мм
[ 0, 400000, 800000, 1600000] // Размер 3000х2200 мм
];
if ( l == 1 ) {
if (size == 1) {
var lp = arrlp[size][psmt];
}
if (size == 2) {
var lp = arrlp[size][pmidt];
}
if (size == 3) {
var lp = arrlp[size][plgt];
}
} else {
lp = 0;
}
var wuxga=document.getElementsByName('wuxga').item(0).checked;
if ( wuxga == true ) {
var w = (pp + lp)/100*30;
} else {
var w = 0;
}
var istoc = document.getElementsByName('istochnik');
for (var i = 0; i < istoc.length; i++) {
if (istoc[i].type == "radio" && istoc[i].checked) {
var ips = istoc[i].value;
}
}
if ( ips == 1) {
var ip = 4000;
}
if ( ips == 2) {
var ip = 20000;
}
if ( ips == 3) {
var ip = 60000;
}
var commut=document.getElementsByName('commut').item(0).checked;
if ( commut == true ) {
var cp = 10000;
} else {
var cp = 0;
}
var arrminrast = [ // Расстояние минимальное
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 4000, 4000, 12000], // Размер 1500х1000 мм
[ 0, 4000, 12000, 12000], // Размер 2000х1500 мм
[ 0, 12000, 12000, 12000] // Размер 3000х2200 мм
];
var arrsredrast = [ // Расстояние 500-1000
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 6000, 6000, 16000], // Размер 1500х1000 мм
[ 0, 6000, 16000, 16000], // Размер 2000х1500 мм
[ 0, 16000, 16000, 16000] // Размер 3000х2200 мм
];
var arrmaxrast = [ // Расстояние более 1000
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 10000, 10000, 20000], // Размер 1500х1000 мм
[ 0, 10000, 20000, 20000], // Размер 2000х1500 мм
[ 0, 20000, 20000, 20000] // Размер 3000х2200 мм
];
var selrast = document.getElementById("krep"); // Получаем наш список
var krep = selrast.options[selrast.selectedIndex].value;
if ( krep == 1 ) {
if ( size == 1 ) {
var kp = arrminrast[size][psmt];
}
if ( size == 2 ) {
var kp = arrminrast[size][pmidt];
}
if ( size == 3 ) {
var kp = arrminrast[size][plgt];
}
if ( size == 0 ) {
var kp = 0;
}
}
if ( krep == 2 ) {
if ( size == 1 ) {
var kp = arrsredrast[size][psmt];
}
if ( size == 2 ) {
var kp = arrsredrast[size][pmidt];
}
if ( size == 3 ) {
var kp = arrsredrast[size][plgt];
}
if ( size == 0 ) {
var kp = 0;
}
}
if ( krep == 3 ) {
if ( size == 1 ) {
var kp = arrmaxrast[size][psmt];
}
if ( size == 2 ) {
var kp = arrmaxrast[size][pmidt];
}
if ( size == 3 ) {
var kp = arrmaxrast[size][plgt];
}
if ( size == 0 ) {
var kp = 0;
}
}
var psumm = sp + pp + lp + w + ip + cp + kp;
document.getElementById("price_oborud").innerHTML = psumm;
var arrchefmo = [ // Шеф Монтаж Москва Московская область
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 20000, 20000, 25000], // Размер 1500х1000 мм
[ 0, 20000, 25000, 25000], // Размер 2000х1500 мм
[ 0, 25000, 25000, 25000] // Размер 3000х2200 мм
];
var arrskeymo = [ // Монтажные работы под ключ Москва и МО
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 32000, 32000, 45000], // Размер 1500х1000 мм
[ 0, 32000, 45000, 45000], // Размер 2000х1500 мм
[ 0, 45000, 45000, 45000] // Размер 3000х2200 мм
];
var arrchefsng = [ // Шеф Монтаж Россия и СНГ
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 47000, 47000, 57000], // Размер 1500х1000 мм
[ 0, 47000, 57000, 57000], // Размер 2000х1500 мм
[ 0, 57000, 57000, 57000] // Размер 3000х2200 мм
];
var arrkeysng = [ // Монтажные работы под ключ Россия и СНГ
[ 0, 0, 0, 0], // Размер не выбран
[ 0, 69000, 69000, 79000], // Размер 1500х1000 мм
[ 0, 69000, 79000, 79000], // Размер 2000х1500 мм
[ 0, 79000, 79000, 79000] // Размер 3000х2200 мм
];
var montaj = document.getElementsByName('works');
for (var i = 0; i < montaj.length; i++) {
if (montaj[i].type == "radio" && montaj[i].checked) {
var mont = montaj[i].value;
}
}
if ( mont == 1 ) {
if ( size == 1 ) {
var m = arrchefmo[size][psmt];
}
if ( size == 2 ) {
var m = arrchefmo[size][pmidt];
}
if ( size == 3 ) {
var m = arrchefmo[size][plgt];
}
if ( size == 0 ) {
var m = 0;
}
}
if ( mont == 2 ) {
if ( size == 1 ) {
var m = arrskeymo[size][psmt];
}
if ( size == 2 ) {
var m = arrskeymo[size][pmidt];
}
if ( size == 3 ) {
var m = arrskeymo[size][plgt];
}
if ( size == 0 ) {
var m = 0;
}
}
if ( mont == 3 ) {
if ( size == 1 ) {
var m = arrchefsng[size][psmt];
}
if ( size == 2 ) {
var m = arrchefsng[size][pmidt];
}
if ( size == 3 ) {
var m = arrchefsng[size][plgt];
}
if ( size == 0 ) {
var m = 0;
}
}
if ( mont == 4 ) {
if ( size == 1 ) {
var m = arrkeysng[size][psmt];
}
if ( size == 2 ) {
var m = arrkeysng[size][pmidt];
}
if ( size == 3 ) {
var m = arrkeysng[size][plgt];
}
if ( size == 0 ) {
var m = 0;
}
}
var summ = psumm + m;
document.getElementById("summ").innerHTML = summ;
document.getElementById("check-sp").innerHTML = sp;
document.getElementById("check-pp").innerHTML = pp;
document.getElementById("check-lp").innerHTML = lp;
document.getElementById("check-w").innerHTML = w;
document.getElementById("check-ip").innerHTML = ip;
document.getElementById("check-cp").innerHTML = cp;
document.getElementById("check-kp").innerHTML = kp;
document.getElementById("check-m").innerHTML = m;
document.getElementById("outtext").value =
(
"Стоимость пленки: " + sp +
"\nСтоимость проектора: " + pp +
"\nСтоимость лазера: " + lp +
"\nСтоимость WUXGA: " + w +
"\nИсточник: " + ip +
"\nКоммутация: " + cp +
"\nКрепление: " + kp +
"\nМонтаж: " + m
);
}
|
|
|
|