Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Заменить значения value в форме при отправке на email (https://javascript.ru/forum/misc/71145-zamenit-znacheniya-value-v-forme-pri-otpravke-na-email.html)

the_little 29.10.2017 06:19

Заменить значения value в форме при отправке на email
 
Всем привет.
Столкнулся с одной проблемой.
Есть калькулятор, пока в таком тестовом виде av.emoney.blog

Все вроде работает как надо. Все считает.
Но вот появилась необходимость отправить форму на почту.
Форма отправляется на почту админу и пользователю.
А раз отправляется пользователю - должна читаться нормально...

Поскольку тут все поля - селекты, чекбоксы, радиобаттоны,
то на почту приходит значение value, либо "on" для чекбокса.

Соответсвенно когда на почту приходит название поля и value 1 или 2 - то это как-то не удобно...

С другой стороны, числовые value применялись чтобы в калькуляторе все нормально работало.

Есть какой-то вариант, чтобы при отправке на почту, вместо value="1" приходил какой-то текст, заданный заранее?

Отправляются данные при помощи phpmailer, но это не принципиально...

Приходит в таком виде:
Бюджет (1-Дешево, 2-Средний, 3-Премиум) - 1
Размер витрины - 1
Тип проектора для маленькой витрины - 2

ruslan_mart 29.10.2017 08:47

the_little, а что мешает на сервере сделать нормальный вид письма?

the_little 29.10.2017 13:01

Цитата:

Сообщение от ruslan_mart (Сообщение 468519)
the_little, а что мешает на сервере сделать нормальный вид письма?

Уровень знаний, надо полагать...

Я еще сейчас подумал, у меня выводится в html такие значения из калькулятора. Может можно их передать на почту? ПРосто там же динамические данные получается.

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;


Ну и html
<div class="check">
		<div class="check-sp">
			Стоимость пленки:
			<span id="check-sp"></span>
		</div>
		<div class="check-pp">
			Стоимость проектора:
			<span id="check-pp"></span>
		</div>
		<div class="check-lp">
			Стоимость лазера:
			<span id="check-lp"></span>
		</div>
		<div class="check-w">
			Стоимость WUXGA:
			<span id="check-w"></span>
		</div>
		<div class="check-ip">
			Источник:
			<span id="check-ip"></span>
		</div>
		<div class="check-cp">
			Коммутация:
			<span id="check-cp"></span>
		</div>
		<div class="check-kp">
			Крепление:
			<span id="check-kp"></span>
		</div>
		<div class="check-m">
			Монтаж:
			<span id="check-m"></span>
		</div>
	</div>

laimas 29.10.2017 14:53

Цитата:

Сообщение от the_little
у меня выводится в html такие значения из калькулятора. Может можно их передать на почту?

document.getElementById("check-sp").innerHTML = sp;
document.getElementById("check-pp").innerHTML = pp;
document.getElementById("check-lp").innerHTML = lp;

То есть sp, pp, lp, ... это как раз то, что пользователю будет понятно?

the_little 29.10.2017 15:04

Цитата:

Сообщение от laimas (Сообщение 468536)
То есть sp, pp, lp, ... это как раз то, что пользователю будет понятно?

совершенно верно. Это переменные, в которых хранится сумма за то или иное оборудование.

Вообще имея возможность отправить на почту данные со скрипта, я смогу сверстать любые нужные данные... Вопрос как их отправить на почту.

Хотя я так понимаю есть вариант отправить на email без php, на чистом JS

laimas 29.10.2017 15:12

Цитата:

Сообщение от the_little
совершенно верно.

Уверены в этом? А если реальный пример из жизни? Пришли вы в магазин, а на полках товары не с названиями "Конфеты", "Печенье", ..., а "1239023234", "234as34yts78", понятно ли будет, что за товары вам предлагают?

the_little 29.10.2017 15:40

Цитата:

Сообщение от laimas (Сообщение 468539)
Уверены в этом? А если реальный пример из жизни? Пришли вы в магазин, а на полках товары не с названиями "Конфеты", "Печенье", ..., а "1239023234", "234as34yts78", понятно ли будет, что за товары вам предлагают?

так если я смогу в принципе передать данные из JS скрипта на почту - то там же можно прописать все что угодно...

Например я пишу

alert("Стоимость пленки на витрину - " + sp);

При этом никто мне не мешает в зависимости от того же value в полях - объявить переменные, в которых я укажу например "Витрина размером 1м*2м". И там же выведу размер витрины, потом стоимость пленки, и так по все нужным данным.
Если я смогу передать это на почту - то дело сделано, как мне видится...

Вопрос в том как вставить это в письмо!

В php файле отправки, в самом начале задаются как я понимаю тоже переменные, в которых хранятся value полей.

т.е.
$size = $_POST['size'];


тут берется значение value из поля с именем size.
потом идет html тело письма, где я пишу Размер витрины - $size.

Если бы таким макаром можно было забрать данные не из поля, а просто из div.

the_little 29.10.2017 15:43

Кстати пришла одна мысль...
СОздать скрытый текстовый инпут, передать в него из скрипта нужные данные, а потом их из это поля вытащить в письмо...

гемор некоторый, но вроде рабочий вариант...
Главное чтобы в value текстового поля можно было передать информацию в таком виде
"Стоимость пленки на витрину - " + sp

laimas 29.10.2017 16:17

Цитата:

Сообщение от the_little
При этом никто мне не мешает в зависимости от того же value в полях - объявить переменные, в которых я укажу например "Витрина размером 1м*2м".

Вот это уже в правильном направлении мысль. Сервер хранит данные, и для удобства оперирования ими, их проверки, данные структурируют. В случае с БД, данные зачастую хранятся под уникальными идентификаторами, в качестве которых зачастую используются числа. Числа потому, что с ними легче работать. Поэтому на клиенте, список формы может выглядеть так:

<select name="pattern">
<opton value=1>В горошек</option>
<opton value=2>В полоску</option>
<opton value=3>В клетку</option>
</select>


Сервер получив форму, проверив, что есть товар и под ключом pattern с выбранным значением 2 действительно возвращается его дизайн, помещает в тело письма "Ситец в полоску".

А 1, 2, 3, не пойдет. Как всякие sp, lp, если только это речь не о размерах одежды SSL и прочее, но и в БД этот размер не будет представлен значением этим, а скорее идентификатором (читайте о нормализации баз данных).

Если используется не БД, то плохо, но для "мелочи ограниченной", к примеру, пойдет, и данные должны быть описаны по тем же принципам как и в БД, и не потому, что "никто мне не мешает", а потому, что так легче оперировать данными как при выводе их пользователю, так и при их проверке.

laimas 29.10.2017 16:21

Цитата:

Сообщение от the_little
СОздать скрытый текстовый инпут, передать в него из скрипта нужные данные, а потом их из это поля вытащить в письмо...

Не надо мусора.


Часовой пояс GMT +3, время: 11:32.