Форма обратной связи Допил.

Статус
В этой теме нельзя размещать новые ответы.

angel_sia

Гуру форума
Регистрация
7 Окт 2012
Сообщения
252
Реакции
92
Всем привет есть форма можно сказать стандартная.

А мне надо еще 2 других.
1. Имя и телефон
- Надо чтоб Имя и Телефон по подали сразу в заголовок письма.
Пример: Заголовок письма - Вас просили перезвонить <Имя><Телефон>
2. В отличие от стандартной формы тут 6 граф.
- ширина-профиль-диаметр
- сезон
- Имя
- Телефон
Надо чтоб в теле письма приходили данные параметры.

Прощу помощи заранее спасибо.
 
Нет там никакой формы.
Читайте, что такое форма — Для просмотра ссылки Войди или Зарегистрируйся




Формы уже есть.
З.Ы. Вопрос по структуре ПХП еще раз а не по формам.
 
Формы уже есть.
З.Ы. Вопрос по структуре ПХП еще раз а не по формам.
Танцы идут от форм как раз таки.
Не будет формы — не будет чего ловить на стороне сервера.
Вот если в форме написано:
HTML:
<input class="form__field" type="email" name="email" placeholder="Email"/>
то после отправки формы значение попадет в $_REQUEST['email'], то есть name в форме — это имя в массиве $_REQUEST
Соответственно если добавим
HTML:
<input class="form__field" type="phone" name="phone" placeholder="Телефон"/>
то после отправки формы значение попадет в $_REQUEST['phone'], и сможете добавить в БД или вывести, или отослать по почте — что хочется, то с этим и делаем.

А теперь посмотрите ТРЕЗВЫМ взглядом — что у Вас там в форме творится?
Правильно, каша. Почти все поля имеют одно имя (name)
То есть они при отправке перепишут друг друга и на сервер попадет только одно, последнее значение —
HTML:
<input class="form__field" type="email" name="formCallPhone" placeholder="Телефон"/>
то есть «Телефон» попадет в поле «formCallPhone», остальные поля не запишутся.
То есть следует дать в инпутах разные «name», а потом при отсылке отослать, например, в письме, добавив к $message:
HTML:
$message.="Телефон: ".$_REQUEST['phone'].", почта: ".$_REQUEST['email']."\n\r";

Посмотрите, там у Вас вначале если была обработка $_REQUEST['user-phone'], то в форме должна быть инпут с name="user-phone" и так далее. Ну или в форме name="phone", тогда на сервере надо ловить это значение в $_REQUEST['phone']
 
Последнее редактирование:
Танцы идут от форм как раз таки.
Не будет формы — не будет чего ловить на стороне сервера.
Вот если в форме написано:
HTML:
<input class="form__field" type="email" name="email" placeholder="Email"/>
то после отправки формы значение попадет в $_REQUEST['email'], то есть name в форме — это имя в массиве $_REQUEST
Соответственно если добавим
HTML:
<input class="form__field" type="phone" name="phone" placeholder="Телефон"/>
то после отправки формы значение попадет в $_REQUEST['phone'], и сможете добавить в БД или вывести, или отослать по почте — что хочется, то с этим и делаем.

А теперь посмотрите ТРЕЗВЫМ взглядом — что у Вас там в форме творится?
Правильно, каша. Почти все поля имеют одно имя (name)
То есть они при отправке перепишут друг друга и на сервер попадет только одно, последнее значение —
HTML:
<input class="form__field" type="email" name="formCallPhone" placeholder="Телефон"/>
то есть «Телефон» попадет в поле «formCallPhone», остальные поля не запишутся.
То есть следует дать в инпутах разные «name», а потом при отсылке отослать, например, в письме, добавив к $message:
HTML:
$message.="Телефон: ".$_REQUEST['phone'].", почта: ".$_REQUEST['email']."\n\r";

Посмотрите, там у Вас вначале если была обработка $_REQUEST['user-phone'], то в форме должна быть инпут с name="user-phone" и так далее. Ну или в форме name="phone", тогда на сервере надо ловить это значение в $_REQUEST['phone']


Спасибо, понял для начало причесать HTML шаблон(name) и потом толкать уже PHP.
Иду чесать данные.

UP.
По заголовкам.
 
Последнее редактирование:
Спасибо, понял для начало причесать HTML шаблон(name) и потом толкать уже PHP.
Иду чесать данные.
Ну наконец-то поняли, что это не магия такая, а надо просто быть внимательным.
Давайте тогда немного советов, раз уж Вы такой благодарный ученик.
1. Удобно в форме имена делать ключами массива. Как это, покажу ниже.
Если у Вас мало опыта, то сразу не дойдёт, зачем это.
А нужно это, чтобы:
— автоматически перебрать данные на сервере и вставить в текст письма;
— добавление полей в форму не приводит к изменению формы отсылки, это жутко удобно.
2. В форме лучше делать метод Пост. Вы не задали никакой, и по-умолчанию он Гет.
Это не всегда удобно — имена и значения попадают в строку адреса, происходит переадресация.
Возможно, это не то, что ожидалось
3. Задавайте урл перехода. Если это тот же скрипт, оставьте пустым. Это имеется в виду атрибут action
4. Если значения заданы пользователем, но не все, отлавливайте и вставляйте те, что он уже задал, чтобы 2 раза не вводил (это раздражает).
5. Проверяйте. Иначе взломают.
И в принципе, в хороших ЦМС формы задаются в объектном стиле.
Это уменьшает кол-во ошибок и кода, ускоряет программирование.
Пока, я так понял, до объектного стиля Вы не дошли, так что отложим обсуждение этого варианта
Иллюстрация вышеозвученных принципов, без проверок и объектного программирования:
PHP:
<?
$result = '';
$to = 'youremail@domain.com';
//Проверяем отправку формы
if (isset($_POST['send_mail'])) {
    $message='';
    foreach ($_POST['send_mail'] as $key=>$value) {
        $message.="$key = $value \r\n";
    }
    if (filter_var($_POST['send_mail']['email'], FILTER_VALIDATE_EMAIL)) {
        $headers =
        "From: You company <".$to.">". "\r\n" .
        "Return-Path: You company <".$to.">\r\n".
        "Reply-To: You company <".$to.">" . "\r\n" .
        "MIME-Version: 1.0\r\n".
        "Content-type: text/html; charset=utf-8\r\n".
        "X-Priority: 3\r\n" .
        'X-Mailer: PHP/' . phpversion();
        mail( $to, 'Mail from my site', $message, $headers);
        $result = "Info sended!";
    } else {
        $result = "Error: invalid email!";
    }
}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Пример отправки мыла</title>
    </head>
    <body>
    <?=(!empty($result))?'<h3>'.$result.'</h3>':''?>
        <form method="post" action="">
            Your name: <input type="text" name="send_mail[name]" value="<?=(!empty($_POST['send_mail']['name']))?$_POST['send_mail']['name']:''?>">
            Subject: <input type="text" name="send_mail[subject]" value="<?=(!empty($_POST['send_mail']['subject']))?$_POST['send_mail']['subject']:''?>">
            Your question: <textarea cols="60" rows="20" name="send_mail[question]"></textarea>
            Your email: <input type="text" name="send_mail[email]">
            <input type="submit" value="Submit">
        </form>
    </body>
</html>
 
Последнее редактирование:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Пример отправки мыла</title>
</head>
<body>
<?=(!empty($result))?'<h3>'.$result.'</h3>':''?>
<form method="post" action="">
Your name: <input type="text" name="send_mail[name]" value="<?=(!empty($_POST['send_mail']['name']))?$_POST['send_mail']['name']:''?>">
Subject: <input type="text" name="send_mail[subject]" value="<?=(!empty($_POST['send_mail']['subject']))?$_POST['send_mail']['subject']:''?>">
Your question: <textarea cols="60" rows="20" name="send_mail[question]"></textarea>
Your email: <input type="text" name="send_mail">
<input type="submit" value="Submit">
</form>
</body>
</html>
Если я правильно понимаю то это само письмо форме HTML для отправки.
Subject Вроде должен отвечать за заголовок(Тема) письма.
Не пойму почему это первым стоит Your name:

3. Задавайте урл перехода. Если это тот же скрипт, оставьте пустым. Это имеется в виду атрибут action
Это я понимаю, но так как вопрос не решен сколько файлов надо пока не писал. action="assets/php/contact.php"

4. Если значения заданы пользователем, но не все, отлавливайте и вставляйте те, что он уже задал, чтобы 2 раза не вводил (это раздражает).
<div class="info-message-form">
<p>Пожалуйста, заполните все поля!</p>
Добавил.
 
Последнее редактирование модератором:
Если я правильно понимаю то это само письмо форме HTML для отправки.
нет, в форме текста. почитай про php mail() функцию. плайн-текст, короче.
Не пойму почему это первым стоит Your name:
Ну я обычную форму забубенил. Я ж не знаю, какие данные твои будут.
А вообще я всё это делаю через объект.
См. пример генератора форм:
Для просмотра ссылки Войди или Зарегистрируйся
См. пример генерации формы:
Код:
$frm = new InputForm ('', 'post', __('Submit'));
    $frm->hidden('save', '1');
    $frm->addrow('',$frm->textarea('help_edit', $result, 55, 15).tinymce_selector('help_edit'), 'top');
    $result = $frm->show(true);
show_window(__('Help').' '.__('for the module').' '.get('edit').': '.__('Edit'), $result, 'center');
Сохранение результата, переданного через форму
Код:
if (!empty($_POST['save'])&&!empty($module)) {
file_write_contents($file,$_POST['help_edit']);
show_window (__('Result'),__('File updated').'. '.__('Show').' — '.show_help($module));
}
Из файла Для просмотра ссылки Войди или Зарегистрируйся
 
нет, в форме текста. почитай про php mail() функцию. плайн-текст, короче.

Ну я обычную форму забубенил. Я ж не знаю, какие данные твои будут.
А вообще я всё это делаю через объект.
См. пример генератора форм:
Для просмотра ссылки Войди или Зарегистрируйся
См. пример генерации формы:
Код:
$frm = new InputForm ('', 'post', __('Submit'));
    $frm->hidden('save', '1');
    $frm->addrow('',$frm->textarea('help_edit', $result, 55, 15).tinymce_selector('help_edit'), 'top');
    $result = $frm->show(true);
show_window(__('Help').' '.__('for the module').' '.get('edit').': '.__('Edit'), $result, 'center');
Сохранение результата, переданного через форму
Код:
if (!empty($_POST['save'])&&!empty($module)) {
file_write_contents($file,$_POST['help_edit']);
show_window (__('Result'),__('File updated').'. '.__('Show').' — '.show_help($module));
}
Из файла Для просмотра ссылки Войди или Зарегистрируйся

Мозг уже потихоньку посылает нафиг, я как бы с PHP вообще не знаком :/
 
Мозг уже потихоньку посылает нафиг, я как бы с PHP вообще не знаком :/
Да ты в последнее не вникай, тебе рано ещё;)
Там, во-первых, ЦМС. Во-вторых, мультиязычная. В третьих, объекты, модули, шаблоны и прочие страшные вещи, что сильно облегчают жизнь старым дядькам вроде меня.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху