Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: HTML Форма - заказ >click "submit" >отпавка на email

Сообщения:  [1-10]   [11-14] 

 
 автор: elenaki   (13.02.2006 в 20:34)   письмо автору
 
   для: Dr.Sqaer   (13.02.2006 в 17:22)
 

надо убрать из HTML скрытые поля <input type="hidden" name="fName[4]"> и <input type="hidden" name="fName[5]">


смысл скрытых полей с именами fName[] - в том, чтобы выводить их, имена, перед собственно значениями. т.е. в виде имя поля: значение.
при этом каждому видимому полю присваивается одно невидимое, НО С ТАКИМ ЖЕ номером.

у вас же все перепутано. fName[3] и fData[3] относятся к разным полям. если, допустим, у скрытого поля с номером 3 нет видимого поля со значением, то надо или ввести такое поле (тоже скрытое), или следующему полю присвоить следцющий номер. поле День должно быть с номером 4 и так далее.

а потом уже смотрите, что и как вы выводите. выводить надо только поля fData[3] ... fData[6], т.к. имена полей тут не нужны. все данные - в значениях.

   
 
 автор: Dr.Sqaer   (13.02.2006 в 17:22)   письмо автору
 
   для: elenaki   (13.02.2006 в 13:06)
 


///Кусок обрабатываемого HTML-я
<td>
<strong>Check in date:</strong></td>
<td><input name="fName[3]" type="hidden" value="Checkin Date">
<input type="text" name="fData[3]" size="2" maxlength="2" /> //Day
<input type="hidden" name="fName[4]">
<select name="fData[4]" size="1">// month
  <option value="January">January</option> и ост. месяцы так же
</select>
<input type="hidden" name="fName[5]"> //year
<input type="text" name="fData[5]" size="2" maxlength="4"/></td>


for ($i=0;$i<=$fCount;$i++)
{
if ($i == 3) //////////////если номер равен 3, входим в другой цикл
{
for ($is = $i; $is < 5; $is++) //////////////с 3-го по 5-й номер
{
$fText.=$fName[$is].":".$fData[$is]; //Я поменял на знак ":"
//приклеиваем строку в виде пробел-данное-пробел-данное-пробел-данное
}
$i=6; /////присваивем счетчику основного цикла значение 5, чтобы перейти к следующему параметру //(возможно, тут надо присвоить 6, я не проверяла)
}
$fText.=$fName[$i].":".$fData[$i]."\n"; ///остальные параметры выводим как раньше - на новой строке
}

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

Checkin Date::43:January:1932

Пробовал присваивать 6 результате

Checkin Date:11:MarchCheckin Date::11

Парюсь уже несколько часов, и не как не могу привести всё в порядок.
Подскажите пожалуйста что не так сдесь!

   
 
 автор: elenaki   (13.02.2006 в 13:06)   письмо автору
 
   для: Dr.Sqaer   (13.02.2006 в 12:53)
 

for ($i=0;$i<=$fCount;$i++) {
if ($i == 3) { //////////////если номер равен 3, входим в другой цикл
for ($ii = $i; $ii < 5; $ii++) { //////////////с 3-го по 5-й номер
$fText.="&nbsp;".$fData[$ii]; приклеиваем строку в виде пробел-данное-пробел-данное-пробел-данное
}
$i=5; /////присваивем счетчику основного цикла значение 5, чтобы перейти к следующему параметру (возможно, тут надо присвоить 6, я не проверяла)
}
$fText.=$fName[$i].": ".$fData[$i]."\n"; //////////остальные параметры выводим как раньше - на новой строке
}

   
 
 автор: Dr.Sqaer   (13.02.2006 в 12:53)   письмо автору
 
   для: elenaki   (13.02.2006 в 10:59)
 

Всё разобрался!
Появился вопрос у меня ещё один! :О)
У меня есть 3 поля "Сheck in date"
day, month, year

<strong>Check in date:</strong></td>
<td><input type="hidden" name="fName[3]" value="Day">
<input type="text" value="" name="fData[3]" size="2" maxlength="2" />
<input type="hidden" name="fName[4]" value="Month"><select name="fData[4]" size="1">
  <option value="January">January</option>
ост. месяцы
  <option value="December">December</option>
</select><input type="hidden" name="fName[5]" value="Month">
<input type="text" value="" name="fData[5]" size="2" maxlength="4"/></td>

Всё это дело приходит ко мне в столбик, т.е
-
10
October
2005
-
А хотелось бы 10 October 2005. Видимо надо делать эти поля уже не fNamep[xx] и fDate[xx], а как то по другому, но вот как что то я не понимаю. Если просто объявить переменные другие и вставить их в тело письма то я получу их в конце или в начале письма, а надо что бы они были на своих местах. Т.е 3, 4, 5

Надеюсь не очень запутанно объяснил

   
 
 автор: Dr.Sqaer   (13.02.2006 в 11:05)   письмо автору
 
   для: elenaki   (13.02.2006 в 10:59)
 

Спасибо огромное, буду разбираться!

   
 
 автор: elenaki   (13.02.2006 в 10:59)   письмо автору
 
   для: Dr.Sqaer   (13.02.2006 в 10:21)
 

приклепляю 2 файла. один - html с формой. к сожалению нет сейчас под рукой похожей
большой формы с разнообразными полями на русском. но это неважно. лучше поймете,
если не отвлекаться на содержание. нам надо работу скрипта проверить. во втором файле -
mini.php - скрипт отправки.
в нем все очень понятно, но поясню

<?
$fMail 
"pochta@otenet.gr";  /// ваша почта, на которую придет послание
$fSubject "&#193;&#201;&#212;&#199;&#211;&#199; &#197;&#202;&#196;&#199;&#203;&#217;&#211;&#199;&#211;  &#197;&#205;&#196;&#201;&#193;&#214;&#197;&#209;&#207;&#205;&#212;&#207;&#211;";   /////предмет сообщения
$fText="$fSubject\n\n";  ////////начало формирования тела письма
$fOk "http://myserver.com/index_gr.php?ok"////адрес страницы, которая откроется после удачной отправки - всякие благодарности и т.п.
$fBad "http://myserver.com/index_gr.php?bad"//// адрес страницы, которая откроется, если отправка не удалась. 
$fCount 47;  /////////количество полей формы (этот параметр можно передавать в самой форме, в скрытом поле, конечно, не учитывая его в общем числе полей, это техническая информация)
//add From: header
$headers "From: pochta@otenet.gr\r\n";  /////////////здесь добавляется поле От Кого в заголовок письма. тоже ваш адрес, с вашего сервера письмо будет послано
///////////про этот цикл я уже писала - перебор всех полей формы и дописывание их к телу письма
for ($i=0;$i<=$fCount;$i++) {$fText.=$fName[$i].": ".$fData[$i]."\n";}
$fText.="\n\n";

$fText.=date("l dS of F Y h:i:s A"); ////ввод даты отправки

if (mail($fMail,$fSubject,$fText$headers)) {
Header("Location: $fOk");}
else {
Header("Location: $fBad");}
/////////// если отправка прошла удачно - идем на страницу с благодарностями, если нет - на страницу с указанием ошибок. кстати, адреса этих страниц тоже можно указать в форме в скрытых полях, тогда скрипт отправки вообще будет от формы независим, как и задумывалось. 


exit;//// BCE!!!
?>

   
 
 автор: Dr.Sqaer   (13.02.2006 в 10:21)   письмо автору
 
   для: elenaki   (13.02.2006 в 09:26)
 

Спасибо за объяснения! Ты не мог бы мне показать работоющий вариант вместе со скриптом для почты. Я например не совсем понимаю, а если у меня не text field, а list menu.
Т.е как это реализововается конкретно на примере.
Если можно с краткими коментами!
Я честно сказать не могу понять и найти инфу, о том как php взаимодействует с почтовой программой на сервере. Т.е есть ли стандартный набор кода именно для отправки.
Например:

{
собираем все переменные, затем раскладываем их в правилном порядке.
}
{
далее передаём их скрипту который их посылает
}

Спасибо!

   
 
 автор: elenaki   (13.02.2006 в 09:26)   письмо автору
 
   для: Dr.Sqaer   (12.02.2006 в 21:53)
 


for ($i=0;$i<=$fCount;$i++) {$fText.=$fName[$i].": ".$fData[$i]."\n";} 


вот цикл, который соединяет ВСЕ поля формы в виде: имя поля, значение поля, перевод строки.
а больше ничего и не нужно. у меня есть еще одно скрытое поле, которое говорит скрипту, на
какой файл возвращаться после отправки - т.к. у меня 3 языковых варианта, а скрипт для
посылки почты один. это очень удобно. он может посылать абсолютно разные формы, ему
можно прямо в форме в скрытом поле указывать, сколько полей надо отправить и цикл
организовать до определенного значения. можно указывать разные файлы для возвращения,
можно указывать разные сабджекты... это ОЧЕНb_УДОБНЫЙ_СКРИПТ. рекомендую. я
только им пользуюсь.

   
 
 автор: Dr.Sqaer   (12.02.2006 в 21:53)   письмо автору
 
   для: Киналь   (12.02.2006 в 21:40)
 

А если у пользователя не установлен mail client ?
И даже так не получилось, как переменные окажутся в теле письма? JavaScript ?
В идеале я хочу чтобы всё это отылалось php скрипту, далее отправлялось на уже заранее забитый в скрипт email, а по результатам выдавалось сообщение или всё OK или Error.
Копаюсь я в примере

<?php
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i"$_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com");
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
$picture "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path $_FILES['mail_file']['name'];
if (
copy($_FILES['mail_file']['tmp_name'], $path)) $picture $path;
}
$thm $_POST['mail_subject'];
$msg $_POST['mail_msg'];
$mail_to $_POST['mail_to'];
//--------Ваши переменные переданные из формы--------
$name=$_POST['name'];
$hotel1=$_POST['hotelm'];
$hotel2=$_POST['hotela'];
$Classoh=$_POST['stars'];
//-----Check in date----------
$daychki=$_POST['daychekin'];
$mnthchki=$_POST['monthchekin'];
$yearchki=$_POST['yearchekin'];
//-----Check out date--------
$daychko=$_POST['daychekout'];
$mnthchko=$_POST['monthchekout'];
$yearchko=$_POST['yearchekout'];
//-------------------------------
$roomtype=$_POST['typeoftheroom'];
$roomnumber=$_POST['kolvorooms'];
$paymethod=$_POST['paymethod'];
//--------Visa support letter----------
$fullname=$_POST['passname'];
$citizenship=$_POST['citizenship'];
$dob=$_POST['dayberthvisa'];
$mob=$_POST['monthberthvisa'];
$yob=$_POST['yearberthvisa'];
$passnumber=$_POST['passnumber'];

// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to$thm$msg);
else 
send_mail($mail_to$thm$msg$picture);

function 
send_mail($to$thm$html$path)
{
//----Начинаем прикручивать---------
$html.="\n\r".$name."\n\r";
$html.=$lastname."\n\r";
$html.=$email."\n\r";
$html.=$city."\n\r";
$html.=$street."\n\r";
$html.=$house."\n\r";
//---------готово--------------
$fp fopen($path,"r");
if (!
$fp)
{
print 
"Файл $path не может быть прочитан";
exit();
}
$file fread($fpfilesize($path));
fclose($fp);

$boundary "--".md5(uniqid(time())); // генерируем разделитель
$headers .= "MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$kod 'koi8-r'// или $kod = 'windows-1251';
$multipart .= "Content-Type: text/html; charset=$kod\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$html\n\n";

$message_part "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
$multipart .= $message_part."--$boundary--\n";

if(!
mail($to$thm$multipart$headers))
{
echo 
"К сожалению, письмо не отправлено";
exit();
}
}


?> 

И не могу понять как это осуществить.
Я только пару дней в php копаюсь, поэтому не удивляйтесь моей непонятливости. Я стараюсь

   
 
 автор: Киналь   (12.02.2006 в 21:40)   письмо автору
 
   для: elenaki   (12.02.2006 в 19:48)
 

А не пойдет

<form action=mailto:destination@email.ru>

?

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования