Показать полную графическую версию : форма отправки на мейл
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">
и ещё встречный вопрос сложно ли сделать чтобы когда в поле ничего не вводишь оно не отображается в присланном письме
а сейчас просто после двоеточия пусто:
Ваше имя:
смотря в каком едиторе проматривать. Попробуйте "\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
Т.е. через одну строчку.
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 итд.
люди правильно сказали
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 ... поставить вначало файла?
про условия не понял.
поставить вначало файла?
кончай прикалываться
mail ('moi_mail@moi_mail.ru','Forma Otpravki!', $text, 'Content-Type: text/html; charset=windows-1251'); »
про условия не понял.
так по русски операторы типа IF назвают
$pole1 = (empty($_POST[pole1]))?"":"Название марки:".$_POST[pole1]."<br>";
каждое поле проверяется пусто или нет. если нет дописывается твое предложение, в данном случае "Название марки:"
Content-Type: text/plain; charset=windows-1251 »
Вот это зачем? С чарсетом почтовик разберется (иначе возможен конфликт кодировок), а text/plain итак по умолчанию... лучше замени на "From: from@mylo.ru"
Sham
Ему походу нужен html, так что Content-Type надо оставить
$headers = "MIME-Version: 1.0\nContent-type: text/html; charset=\"windows-1251\"";
oIo_DeN_oIo
25-02-2008, 10:52
а как сделать проверку обязательных полей? включая поля чекбоксы и точки (radio) ? т.е. Чтобы форма не отправляла инфу пока обязательные поля не заполнены/отмечены?
вопросы у тебя становятся все интересней, так люди тебе всю логику сайта напишут :)) если совсем посто сделай просто опрос
$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
спасибо .... ок »
??
<?
$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:
<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 не работает... :)
не совсем понял о чем речь. А что за движок, 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>
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.