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 18:04

И все-таки, может есть вариант передать эту информацию с переносом строки?
В textarea же это выглядит как надо...
А то создавать 10 скрытых инпутов не хочется.

laimas 29.10.2017 18:07

Цитата:

Сообщение от the_little
И все-таки, может есть вариант передать эту информацию с переносом строки?

Откуда и куда, и зачем?

the_little 29.10.2017 18:23

Цитата:

Сообщение от laimas (Сообщение 468559)
Откуда и куда, и зачем?

Задача:
Передать значения переменных из JS скрипта на почту пользователя, с добавлением "поясняющего" текста.
Чтобы человек на почту получил читабельный текст.

В php я могу вставлять только произвольный текст (html) и value из полей.

Соответсвенно сейчас я могу все необходимые мне переменные передать в <textarea> и потом отправить value на почту.

Проблема в том что в <textarea> переносы на строку действуют, а после отправки все приходит в одну строку, что не удобно...

JS
document.getElementById("outtext").value = 
    (
        "Стоимость пленки: " + sp +
        "\nСтоимость проектора: " + pp +
        "\nСтоимость лазера: " + lp +
        "\nСтоимость WUXGA: " + w +
        "\nИсточник: " + ip +
        "\nКоммутация: " + cp +
        "\nКрепление: " + kp +
        "\nМонтаж: " + m
    );


HTML <textarea>
Стоимость пленки: 22000
Стоимость проектора: 160000
Стоимость лазера: 400000
Стоимость WUXGA: 168000
Источник: 20000
Коммутация: 10000
Крепление: 12000
Монтаж: 79000


А на почте:
Стоимость пленки: 22000 Стоимость проектора: 160000 Стоимость лазера: 400000 Стоимость WUXGA: 168000 Источник: 20000 Коммутация: 10000 Крепление: 12000 Монтаж: 79000

laimas 29.10.2017 18:29

Цитата:

Сообщение от the_little
Передать значения переменных из JS скрипта на почту пользователя, с добавлением "поясняющего" текста.

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

Это:

Цитата:

Сообщение от the_little
document.getElementById("outtext").value =
    (
        "Стоимость пленки: " + sp +
        "\nСтоимость проектора: " + pp +
        "\nСтоимость лазера: " + lp +
        "\nСтоимость WUXGA: " + w +
        "\nИсточник: " + ip +
        "\nКоммутация: " + cp +
        "\nКрепление: " + kp +
        "\nМонтаж: " + m
    );

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

the_little 29.10.2017 19:34

Цитата:

Сообщение от laimas (Сообщение 468563)
Не надо ничего кроме значения полей формы передавать на сервер, и об этом вам уже твердят несколько постов подряд. Связывайте поля формы с определениями на сервере и формируйте что угодно.

Это:



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

не понимаю. чтобы связать значения value с чем то вразумительным - нужно еще один калькулятор на сервере написать?

the_little 29.10.2017 19:37

для переменной "m" - 12 вариантов значений, в зависимости от значения 4-х селектов, по 3 значения в каждом.
Что я должен сделать, чтобы отправить посчитанную уже переменную по почте, при этом дав описание (по сути указав 1 из 12 значений).

laimas 29.10.2017 21:26

Цитата:

Сообщение от the_little
не понимаю. чтобы связать значения value с чем то вразумительным

А на каком основании вы пытаетесь втюхать серверу:

"Стоимость пленки: " + sp

а к примеру не

"Крепление: " + sp?

Если на клиенте вы знаете чему что соответствует, то почему сервер не может знать? Если на клиенте можно что-то посчитать, основываясь на выборе пользователя, то почему посчитать не может сервер?

Одна из святых обязанностей сервера, это проверка данных полученных извне. Если вместо данных сервер будет получать хлам типа:

"Стоимость пленки: " + sp +
"\nСтоимость проектора: " + pp +
"\nСтоимость лазера: " + lp +
.....

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

Но вы то получаете эти данные на сервере, отправляете их почтой, что уже накладывает ответственность на вас как разработчика. Учтите, класс phpmailer не для устранения дыр, которые вы сознательно определяете своим подходом, этот класс всего лишь для грамотного оформления почтовых сообщений. А как, кому и что он будет отправлять определяете вы как разработчик.

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

Я могу описать нечто из данных без базы таким образом:

$data = [
    'figure' => [
        'head' => [
            'label' => 'Фигура',
            'set'   => 'Выберите фигуру',
            'tpl'   => 'Выбрана фигура'
        ],
        'opt' => [
            1 => 'квадрат',
                 'круг',
                 'ромб'
        ] 
    ],
    'size' => [
        'head' => [
            'label' => 'Размер',
            'set'   => 'Выберите размер',
            'tpl'   => 'Выбран размер фигуры'
        ],
        'opt' => [
            1 => 'большой',
                 'средний',
                 'малый'
        ],
    ],
    'color' => [
        'head' => [
            'label' => 'Цвет',
            'set'   => 'Выберите цвет',
            'tpl'   => 'Цвет фигуры выбран'
        ],
        'opt' => [
            1 => 'белый',
                 'черный',
                 'синий'
        ]
    ],
];


И по этим данным буду строить форму:

<form>
<?php
foreach($data as $key=>$val) :
?>
    <div><label><?=$val['head']['label']?>:</label> <select required name="<?=$key?>"><option value=""><?=$val['head']['set']?></option>
<?php
    foreach($val['opt'] as $k=>$v):
?>
        <option value="<?=$k?>"><?=$v?></option>
<?php
    endforeach;
?>
    </select></div>
<?php         
endforeach;
?>
<button>Отправить</button>
</form>


Сервер получая форму, зная, что она должна прислать количество полей равных количеству элементов массива $data и все ключи массива данных этой формы должны соответствовать ключам массива $data, проверяет это условие. Если пользователь выберет в трех списках значение 2, может ли сервер знать что выбрано, и сформировать согласно принятому список, который основан на описании в массиве $data:

Выбрана фигура: круг
Выбран размер фигуры: средний
Цвет фигуры выбран: черный

???

Наверное же это не будет для него проблемой. Вы думаете для него будет проблемой что-то и посчитать, если он знает, что цена за единица товара Т, идентификатор которого равен 15, равна 200 руб., а формой прислано под ключом 'goods' определяющем выбор товара, во вложении под ключом 15, значение равное 3, которое означает количество выбранного?

Прежде чем писать приложения, а тем более многопользовательские и открытые "всем ветрам", нужно изучить способы хранения данных на сервере - почему так, а не иначе, с чем это связано и т.д. Не зная этого, вы ставите все с ног на голову.


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