Войти

Показать полную графическую версию : форма отправки на мейл


Страниц : [1] 2

oIo_DeN_oIo
22-02-2008, 11:18
Есть форма отправки на емейл длинноватая полей этак 20, ниже представлен обработчик формы. Всё работает как надо. НО. Когда приходит письмо с собранными данными некоторые поля отображаются не так:

Название марки: Мазда
Адрес компании: Бобруйск
Ваша должность: Менеджер

А отображается вот так.
Название марки: Мазда Адрес компании: Бобруйск Ваша должность: Менеджер

как сделать чтобы всё было как в первом примере?

P.S. Когда отправляешь пустую форму тогда все поля расположены как надо.

<?php
$date = date ('d.m.Y, H:i');
$text = "Название марки: $_POST[pole1]\n Адрес компании: $_POST[adress]\n Ваша должность: $_POST[dolzhnost]\n \n$date";
mail ('moi_mail@moi_mail.ru','Forma Otpravki!', $text, 'Content-Type: text/plain; charset=windows-1251');
?>
<meta http-equiv="refresh" content="0; URL=thanks.htm">

и ещё встречный вопрос сложно ли сделать чтобы когда в поле ничего не вводишь оно не отображается в присланном письме
а сейчас просто после двоеточия пусто:
Ваше имя:

bruder
22-02-2008, 14:28
смотря в каком едиторе проматривать. Попробуйте "\r\n". А второе не очень понял - надо условия понаставить или?
$pole1 = (empty($_POST[pole1]))?"":"Название марки:".$_POST[pole1]."\r\n";
... каждое поле так


$text = $pole1.$pole2...

---------------------------------
вообщето я не волшебник, только учусь

oIo_DeN_oIo
22-02-2008, 15:30
Про второе да условия имел ввиду.. если после заполнено оно отсылается если нет то не отображается в присланном письме.
насчёт просмотрщика не понял. просто письмо приходит в стандартную программу например Microsoft Outlook и там смотрится :)
А сложно сделать чтобы письмо составлялось в html?


p.s. Добавление "\r" не помогло
"Название марки: $_POST[pole1]\r\n\n когда делаешь так то все строчки в письме в таком виде
строка 1

строка 2

Т.е. через одну строчку.

Arrest
22-02-2008, 15:51
oIo_DeN_oIo
mail ('moi_mail@moi_mail.ru','Forma Otpravki!', $text, 'Content-Type: text/html; charset=windows-1251');
?

mountfield
22-02-2008, 16:33
А <br> не пробовали, заранее извиняюсь за ламерское предложение. Я его всегда вместо \n использую.

oIo_DeN_oIo
22-02-2008, 16:33
to Arrest
эта строка значит отправлять эту форму на мыло с темой Forma Otpravki! и далее следует кодировка .


mountfield
<br> пробывал приходит вместе с текстом :)

P.S. Перво что пробывал это разхместить код так


$text = "
Название марки: $_POST[pole1]\n
Адрес компании: $_POST[adress]\n
Ваша должность: $_POST[dolzhnost]\n \n$date";


Но текст в итоге приходит через строку
пункт1

пункт 2 итд.

bruder
22-02-2008, 17:25
люди правильно сказали
1. от Arrest - Content-Type: text/html -> шлет как html поэтому:
2. втыкай <br> или форматируй с css как нравится
3. поверяешь моим способом на наличие переменной и все ок

oIo_DeN_oIo
22-02-2008, 17:47
2. втыкай <br> или форматируй с css как нравится »

втыкал но оно отправлялось как бр в текст. может эту строку Content-Type: text/html ... поставить вначало файла?
про условия не понял.

bruder
22-02-2008, 18:38
поставить вначало файла?

кончай прикалываться

mail ('moi_mail@moi_mail.ru','Forma Otpravki!', $text, 'Content-Type: text/html; charset=windows-1251'); »

про условия не понял.

так по русски операторы типа IF назвают

$pole1 = (empty($_POST[pole1]))?"":"Название марки:".$_POST[pole1]."<br>";
каждое поле проверяется пусто или нет. если нет дописывается твое предложение, в данном случае "Название марки:"

Sham
22-02-2008, 21:11
Content-Type: text/plain; charset=windows-1251 »
Вот это зачем? С чарсетом почтовик разберется (иначе возможен конфликт кодировок), а text/plain итак по умолчанию... лучше замени на "From: from@mylo.ru"

Arrest
22-02-2008, 22:47
Sham
Ему походу нужен html, так что Content-Type надо оставить

Sham
22-02-2008, 23:46
$headers = "MIME-Version: 1.0\nContent-type: text/html; charset=\"windows-1251\"";

oIo_DeN_oIo
25-02-2008, 10:52
а как сделать проверку обязательных полей? включая поля чекбоксы и точки (radio) ? т.е. Чтобы форма не отправляла инфу пока обязательные поля не заполнены/отмечены?

bruder
25-02-2008, 12:29
вопросы у тебя становятся все интересней, так люди тебе всю логику сайта напишут :)) если совсем посто сделай просто опрос

$error = "";
if(empty($_POST[name]))
$error.= "введите имя<br>;
else if(empty($_POST[email]))
$error.= "введите email<br>;

if(!empty($error))
<div><?=$error?></div>
покажи форму
else
спасибо .... ок

oIo_DeN_oIo
25-02-2008, 14:10
что значит покажи форму
else
спасибо .... ок »
??

bruder
25-02-2008, 15:52
<?
$error = "";

if (isset($_POST['send'])){
if(empty($_POST["name"]))
$error.= "введите имя<br>";
if(empty($_POST["email"]))
$error.= "введите email<br>";
}
if(empty($error) && isset($_POST['send'])){
?>
<TABLE width="100%" height="100%">
<TR>
<TD align="center">Спасибо за все
<FORM METHOD=POST ACTION="http://forum.oszone.net/thread-101265-2.html">
<INPUT TYPE="submit" value='Дальше'>
</FORM></TD>
</TR>
</TABLE>
<? }else{ ?>

<div style="color:red"><?=$error?></div>
<form method=post action="<?$_SERVER['PHP_SELF']?>">
Name:
<INPUT TYPE="text" NAME="name" value='<?=$_POST["name"]?>'><BR>
Email:&nbsp;
<INPUT TYPE="text" NAME="email" value='<?=$_POST["email"]?>'><BR>
<INPUT TYPE="submit" name='send' value="send">
</form>

<?}?>

oIo_DeN_oIo
25-02-2008, 19:00
это всё писать в обработчике?

или в самой форме с полями. Дело в том что у меня в движке на странице только ввод html g[g вроде не буцдет работать... а в отработчике формы наоборот html не работает... :)

bruder
25-02-2008, 19:43
не совсем понял о чем речь. А что за движок, cms какя то? Я знаком только с немногими и то поверхностно, хотя думаю мог бы разобраться.

timon4ik
26-02-2008, 11:47
oIo_DeN_oIo, валидатор без php, если я правильно понял о чем речь:

<script language="JavaScript">
function validate()
{
error_message="";
if(!document.form1.name1.value) error_message="Не заполнено поле 1";
if(!document.form1.name2.value) error_message="Не заполнено поле 2";
if(error_message)
{
alert(error_message);
return false;
}
}
</script>

<form name="form1" action="ссылка_на_обработчик" onsubmit="return validate();">
<INPUT TYPE="text" NAME="name1"><BR>
<INPUT TYPE="text" NAME="name2"><BR>
<INPUT TYPE="submit" name='send' value="send">
</form>

bruder
26-02-2008, 11:56
хороший код, респект




© OSzone.net 2001-2012