Помощник
|
Отправка расчетов на почту, нужно помощь |
Trizmer
|
Сообщение
#1
|
||
|
|
||
|
|||
x64 |
28.2.2015, 11:17;
Ответить: x64
Сообщение
#2
|
|
Цитата if($_POST['submit']) { # код для первой кнопки } if($_POST['btn_submit']){ # код для второй кнопки } Данные считаются только по первой кнопке. При нажатии на вторую первая ветка просто пропускается. ЗЫ: вообще, разрабатывать надо в режиме включённых ошибок. |
|
|
Trizmer
|
Сообщение
#3
|
|
x64, Спасибо за ответ. если не сложно могли бы показать примитивный пример того как должно работать?
К примеру просто вводим поле, нажимаем кнопку это поле высвечивается на экране. ниже вводим меил нажимаем отправить и то что отображается на экране уходит на почту. Сообщение отредактировал Trizmer - 28.2.2015, 11:25 -------------------- |
|
|
x64 |
28.2.2015, 11:29;
Ответить: x64
Сообщение
#4
|
|
Сделать единый контейнер формы (сейчас их два), и первый if () заменить на:
Цитата if($_POST['submit'] || $_POST['btn_submit']) {
} |
|
|
andreykashops |
28.2.2015, 12:00;
Ответить: andreykashops
Сообщение
#5
|
|
ТС, у вас же не сохраняются введенные юзером данные, после расчет стоимости там нечему отправляться на почту...
-------------------- |
|
|
Trizmer
|
Сообщение
#6
|
|
x64, пробую по разному, не получается у меня. сделал простой пример http://aqt.kz/test.php
Код <form method="post" name="form" action=""> текст - <INPUT TYPE=TEXT NAME="text" SIZE=20 onkeypress="return OnlyNum(event)" maxlength="3"> <input type="submit" value="Вывести текст" style="width: 155px;" id="btkalk" name="submit"></form> <?php if($_POST['submit']) { $text = $_POST['text']; echo ("Текст - $text"); } else { echo ""; } ?> <?php $msg_box = ""; // в этой переменной будем хранить сообщения формы if($_POST['btn_submit']){ $errors = array(); // контейнер для ошибок // проверяем корректность полей if($_POST['user_email'] == "") $errors[] = "Поле 'Ваш e-mail' не заполнено!"; // если форма без ошибок if(empty($errors)){ // собираем данные из формы $message .= "Текст - $text"; send_mail($message); // отправим письмо // выведем сообщение об успехе $msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>"; }else{ // если были ошибки, то выводим их $msg_box = ""; foreach($errors as $one_error){ $msg_box .= "<span style='color: red;'>$one_error</span><br/>"; } } } // функция отправки письма function send_mail($message){ // почта, на которую придет письмо $mail_to = $_POST['user_email']; // тема письма $subject = "Письмо с обратной связи"; // заголовок письма $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма $headers .= "From: info@aqt.kz\r\n"; // от кого письмо // отправляем письмо mail($mail_to, $subject, $message, $headers); } ?> <?= $msg_box; // вывод сообщений ?> <br/> <form action="<?=$_SERVER['PHP_SELF'];?>" method="post" name="frm_feedback"> Отправить текст на почту - <input type="text" name="user_email" value="<?=($_POST['user_email']) ? $_POST['user_email'] : ""; // сохраняем то, что вводили?>" /> <input type="submit" value="Отправить" name="btn_submit" /> </form> Исправте в этом примере как вы говорите чтобы я понял. Надо чтобы человек сначала ввел текст и вывел его на экран и только почле этого ввел свой меил и отправил на почту. Спасибо. -------------------- |
|
|
x64 |
28.2.2015, 12:33;
Ответить: x64
Сообщение
#7
|
|
Надо чтобы человек сначала ввел текст и вывел его на экран и только почле этого ввел свой меил и отправил на почту Значит, данные сначала надо сохранить, после чего вывести вторую форму с кнопкой, при нажатии на которую их восстановить и отослать. Сессии в помощь. При штатном режиме работы, отослали форму один раз, сервер вернул ответ и забыл про него. При втором запросе происходит то же самое. И при третьем. |
|
|
Trizmer
|
Сообщение
#8
|
|
x64, ооо чего я и боялся, я совсем далек. знаний моих хватило на гульку и еще чуть чуть. Подскажите пожалуйста какой раздел php почитать чтобы я это смог осуществить. Спасибо.
x64, я почитал про сессии, и поставил в первой части скрипта session_start(); $_SESSION['text'] = $text; Как я понимаю это дожно сохранить значение переменно $text и во второй части скрипта я пытаюсь эту переменную восстановить session_start(); $textmail = $_SESSION['text']; Но ничего не выходит, когда нажимаю отправку $_SESSION['text'] оказывается пустым. Но если в сессию в верхней части записать не переменную $text а просто текст тогда он передается на почту. Получается проблема в том что когда я нажимаю отправить письмо $_SESSION['text'] перезаписывается и становится пустым. Подскажите пожалуйста как решить эту проблему. -------------------- |
|
|
x64 |
28.2.2015, 14:11;
Ответить: x64
Сообщение
#9
|
|
session_start() срабатывает, только если она идёт до любого вывода данных (если файл сохранён в UTF-8 с BOM, не сработает, т. к. перед <? будут добавлено 3 байта сигнатуры).
Простой пример во вложении. Если сразу нажать на вторую кнопку, значение переменной в сессии будет не определено. Если ввести значение в поле и нажать первую кнопку, оно запишется в сессию, после чего нажатие второй кнопки выводит это значение. Если заполнить поле чем-то другим, переменная в сессии будет изменена на новое значение.
Прикрепленные файлы
|
|
|
Trizmer
|
Сообщение
#10
|
|
|
Решил проблему разделением скрипта на два файла - ввод данных, расчет, форма отправки на меил и второй файл обработчик формы отправки на меил, иначе сессия перезаписывалась.
-------------------- |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Отправка смс на телефоне через web-сайт | 0 | Sepembra | 956 | 21.8.2018, 16:13 автор: Sepembra |
|
Ищу знатока MODX и контактных форм (отправка сообщений с сайта) | 0 | by_roXe | 1844 | 31.5.2017, 14:35 автор: by_roXe |
|
VkNotify - отправка уведомлений ВКонтакте | 9 | lordonx3 | 12468 | 4.5.2015, 14:17 автор: lordonx3 |
|
Требуется Отправка ссылок в индекс | 2 | sergeyasaylak | 5212 | 5.2.2015, 22:34 автор: mixalius |
|
Отправка данных с формы в php и на почту | 1 | Beactive | 3348 | 24.4.2014, 21:56 автор: -Beactive- |
Текстовая версия | Сейчас: 25.4.2024, 10:23 |