Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/42: Рейтинг темы: голосов - 42, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 05.11.2009
Сообщений: 8

Обработка формы - заказа

05.11.2009, 20:02. Показов 7791. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, с решением такой проблемы. Есть 2 файла anketa.php и mail.php.
В файле anketa.php находится анкета, поля для заполнения и чекбокс. Внизу автоматически выводится сумма позиций отмеченных в чекбоксе в спец. окошке. Еще ниже кнопки Отправить и Очистить.
Второй файл - mail.php - должен обработать форму и отправить все данные ко мне на имэйл, в том числе и те чекбоксы, в которых проставили галочки.
Таким образом, когда посетитель заполняет необходимые поля, и нажимает кнопку Отправить данные из всей формы передаются ко мне на имэйл, а Сумма товаров, то что прописано цифрами в спец. окошке, должна передаваться в РНР-скрипт робокассы, который находится в том же файле обработки анкеты - файле mail.php.

Написала уже анкету, сделала чекбоксы, чтоб все считалось автоматически, написала РНР-файл, в кот. обрабатывается форма и идет отправка на имэйл и код робокассы для приема данных из окна Сумма.

Но почему-то ничего не работает. Более того, когда заполняю форму и потом нажимаю отправить перегружается опять эта же страница с пустыми полями для заполнения, хотя в документе прописано action="mail.php" и находится он в директории, что и anketa.php.

Помогите найти ошибку, почему же все-таки не отправляется форма мне на имэйл и не происходит перевод в робокассу. Очень надеюсь на вашу помощь. Оба файла прилагаю!

anketa.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<form name="formText">
                  <form method="post" form action="mail.php" accept-charset="windows-1252">
                    E-mail*<input type="text" name="Data1" size="40"> <Br>
                    Пол <select name="Data2">
                        <option value="мужской">мужской</option>
                        <option value="женский">женский</option></select>                      
                    Имя<input type="text" name="Data3" size="40"><Br>
                    Имена<textarea name="Data4" cols="32" rows="3"></textarea><BR>
             Имена2<textarea name="Data5" cols="32" rows="3"></textarea><br>
   <script language="JavaScript">
<!--
function sums()
{
 sum=0;
 for(i=1;i<19;i++)
 { 
  var elem=document.getElementById("r"+i);
  if(elem.checked)sum=sum+parseInt(elem.value);
 }
 document.formText.sumOut.value=sum;
}
function setChecked(obj) 
   {
   var str = document.getElementById("text").innerHTML;
   str = (str == "отметить" ? "снять" : "отметить");
   document.getElementById("text").innerHTML = str;
   
   var check = document.getElementsById("r"+i);
   for (var i=1; i<check.length; i++) 
      {
      check[i].checked = obj.checked;
      }
   }
//-->
</script>
 
<input type="checkbox" name="checkbox1" value="1" id="r1" onchange="sums()">text<br>
<input type="checkbox" name="checkbox2" value="1" id="r2" onchange="sums()">text<br>
<input type="checkbox" name="checkbox3" value="1" id="r3" onchange="sums()">text<br>
 
<input name="sumOut" type="text" onMouseMove="sums()" readonly size="2">      
                              
<input type="text" name="hida2" value="" maxlength="100" size="3" style="display : none;">
 
<input type="submit" class="btn" value="Отправить" name="Submit" >    
 
<input type="reset" class="btn" value="Очистить" name="Clear">
</form>

mail.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
$Data1=$_POST["Data1"]; 
$Data2=$_POST["Data2"];
$Data3=$_POST["Data3"];
$Data4=$_POST["Data4"];
$Data5=$_POST["Data5"];
$_SERVER["REMOTE_ADDR"];
if (isset ($Data1))
{
$name = substr($Data1,0,30); 
if (empty($Data1))
{
echo "<center><b>Не указан E-mail!!!<p>";
echo "<a href=anketa.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else 
{
$Data1 = "не указано";
}
if (isset ($Data2))
{
$name  = substr($Data2); 
exit;
}
if (isset ($Data3))
{
$name  = substr($Data3,0,30); 
if (empty($Data3))
{
echo "<center><b>Не указано имя!!!<p>";
echo "<a href=anketa.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else 
{
$Data3 = "не указано";
}
if (isset ($Data4))
{
$name  = substr($Data4); 
exit;
}
if (isset ($Data5))
{
$name  = substr($Data5); 
exit;
}
if ($_REQUEST['checkbox1'] == true) { 
    echo "Чек бокс установлен"; 
} 
if ($_REQUEST['checkbox2'] == true) { 
    echo "Чек бокс установлен"; 
} 
if ($_REQUEST['checkbox3'] == true) { 
    echo "Чек бокс установлен"; 
}
if ($Data1 == $i AND $Data2 == $i AND $Data3 == $i AND $Data4 == $i AND $Data5 == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "xxxxxx@xxxx.xx";  
$subject = "Сообщение с сайта";
$message = "Электронный адрес:$Data1::::::::::Пол:$Data2::::::::::Имя:$Data3:::::::::Имена:$Data4:::::::::Имена2:$Data5:::::::::IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо!<br>;
exit;
?>
                  <P>PAY</P>
                                   
<?
// 2.
// Оплата заданной суммы с выбором валюты на сайте ROBOKASSA
// Payment of the set sum with a choice of currency on site ROBOKASSA
 
// регистрационная информация (логин, пароль #1)
// registration info (login, password #1)
$mrh_login = "login";
$mrh_pass1 = "pasword";
 
// номер заказа
// number of order
$inv_id = 0;
 
// описание заказа
// order description
$inv_desc = "Pay";
 
// сумма заказа
// sum of order
$out_summ = $_GET["sumOut"];
 
// тип товара
// code of goods
$shp_item = "2";
 
// предлагаемая валюта платежа
// default payment e-currency
$in_curr = "PCR";
 
// язык
// language
$culture = "ru";
 
// формирование подписи
// generate signature
$crc  = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");
 
// форма оплаты товара
// payment form
print "<html><script language=JavaScript ".
      "src='https://www.roboxchange.com/mrh_summpreview.asp?".
      "MrchLogin=$mrh_login&OutSum=$out_summ&InvId=$inv_id&IncCurrLabel=$in_curr".
      "&Desc=$inv_desc&SignatureValue=$crc&Shp_item=$shp_item".
      "&Culture=$culture&Encoding=$encoding'></script></html>";
?>
И что нужно прописать в 68 строке второго файла мэйл.рнр, чтобы там отображались в письме на ящике и данные о выбранных чекбоксах.

Заранее огромное спасибо!!!
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2009, 20:02
Ответы с готовыми решениями:

Обработка формы заказа: отослать анкету на почту
Добрый день столкнулся с такой проблемой. Пытался сам что то сделать нужно на сайте сделать чтобы после заполнения анкеты она отправлялась...

Из формы заказа приходят не все данные.
ПОдскажите, почему в форме заказа не отправляется название выбранной текстуры &lt;form method=&quot;post&quot;...

отправка формы заказа
Подскажите, пожалуйста, или укажите на пример. Как сделать что бы после отправки сообщения, то есть после нажатия кнопки...

8
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.11.2009, 02:02
Не отправляются данные у вас по этой причине
HTML5
1
2
<form name="formText">
                  <form method="post" form action="mail.php" accept-charset="windows-1252">
должна быть одна вот так

HTML5
1
<form method="post" form action="mail.php">
да и сам PHP код кривой.. счас подправлю ждите.

кстати, гдето я его видел

Добавлено через 43 минуты
Полностью переделанный, проверенный код.

файл anketa.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<html>
  <head>
    <title>
      Форма
    </title>
   <script language="JavaScript">
<!--
function sums()
{
 sum=0;
 for(i=1;i<19;i++)
 {
  var elem=document.getElementById("r"+i);
  if(elem.checked)sum=sum+parseInt(elem.value);
 }
 document.formText.sumOut.value=sum;
}
function setChecked(obj)
   {
   var str = document.getElementById("text").innerHTML;
   str = (str == "отметить" ? "снять" : "отметить");
   document.getElementById("text").innerHTML = str;
 
   var check = document.getElementsById("r"+i);
   for (var i=1; i<check.length; i++)
      {
      check[i].checked = obj.checked;
      }
   }
//-->
</script>
  </head>
<body>
<form method="post" form action="mail.php">
E-mail*<input type="text" name="Data1" size="40"> <Br>
Пол <select name="Data2">
      <option value="m">мужской</option>
      <option value="f">женский</option>
      </select>
Имя     <input type="text" name="Data3" size="40"><br>
Имена <textarea name="Data4" cols="32" rows="3"></textarea><br>
Имена2<textarea name="Data5" cols="32" rows="3"></textarea><br>
 
<input type="checkbox" name="checkbox1" value="1" id="r1" onchange="sums()">text<br>
<input type="checkbox" name="checkbox2" value="1" id="r2" onchange="sums()">text<br>
<input type="checkbox" name="checkbox3" value="1" id="r3" onchange="sums()">text<br>
 
<input name="sumOut" type="text" onMouseMove="sums()" readonly size="2">
 
<input type="text" name="hida2" value="" maxlength="100" size="3" style="display : none;">
 
<input type="submit" class="btn" value="Отправить" name="Submit" >
 
<input type="reset" class="btn" value="Очистить" name="Clear">
</form>
</body>
</html>

****************
файл mail.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
 
if (!isset($_POST["hida2"]))
{
header ("location: anketa.php");
}
else // если есть hida2 то данные были присланы формой и надо все проверить
{
 
  if ($_POST["Data1"]=='')
  {echo "<div align=\"center\">Вы не указали Е-mail.<br><a href=anketa.php>Вернуться и правильно заполнить форму.</a></div>";}
  else // если указан Е-mail
  {
    if ($_POST["Data2"]=='')
    {echo "<div align=\"center\">Вы не указали свой пол.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
    else // если указан пол
    {
      if ($_POST["Data3"]=='')
      {echo "<div align=\"center\">Вы не указали имя.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
      else // если указано имя
      {
        if ($_POST["Data4"]=='')
        {echo "<div align=\"center\">Вы не указали имена.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
        else // если указали имена
        {
          if ($_POST["Data4"]=='')
          {echo "<div align=\"center\">Вы не указали имена 2.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
          else  // если указали имена 2
          {
/*******/
$Data1=substr($_POST["Data1"],0,30);  // режем строку
$Data2=substr($_POST["Data2"],0,30);  // режем строку
$Data3=substr($_POST["Data3"],0,30);  // режем строку
$Data4=substr($_POST["Data4"],0,30);  // режем строку
$Data5=substr($_POST["Data5"],0,30);  // режем строку
 
$to =$_POST["Data1"];
$headers  = "Content-type: text/html; charset=windows-1251"."\r\n";   // чтобы сообщение не пришло крокозябрами
$subject = "Сообщение с сайта";
$message = "Электронный адрес:$Data1::::::::::Пол:$Data2::::::::::Имя:$Data3:::::::::Имена:$Data4:::::::::Имена2:$Data5:::::::::IP-адрес:$_SERVER[REMOTE_ADDR]";
$send=mail($to, $subject, $message, $headers);
if ($send)
{echo "Сообщение успешно отправлено на указанный вами адрес <address>".$_POST["Data1"]."</address>";}
else
{echo "<div align=\"center\">Не удалось отправить сообщение.<br><a href=\"anketa.php\">Вернуться и повторить попытку.</a></div>";}; exit;}
 
 
mail ($to,$subject,$message) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо!<br>";
exit;
echo '<P>PAY</P>';
// 2.
// Оплата заданной суммы с выбором валюты на сайте ROBOKASSA
// Payment of the set sum with a choice of currency on site ROBOKASSA
 
// регистрационная информация (логин, пароль #1)
// registration info (login, password #1)
$mrh_login = "login";
$mrh_pass1 = "pasword";
 
 
$encoding=''; ////////////////////////////////////укажите!!!
 
// номер заказа
// number of order
$inv_id = 0;
 
// описание заказа
// order description
$inv_desc = "Pay";
 
// сумма заказа
// sum of order
$out_summ = $_POST["sumOut"];
 
// тип товара
// code of goods
$shp_item = "2";
 
// предлагаемая валюта платежа
// default payment e-currency
$in_curr = "PCR";
 
// язык
// language
$culture = "ru";
 
// формирование подписи
// generate signature
$crc  = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");
 
// форма оплаты товара
// payment form
print "<html><script language=JavaScript ".
      "src='https://www.roboxchange.com/mrh_summpreview.asp?".
      "MrchLogin=$mrh_login&OutSum=$out_summ&InvId=$inv_id&IncCurrLabel=$in_curr".
      "&Desc=$inv_desc&SignatureValue=$crc&Shp_item=$shp_item".
      "&Culture=$culture&Encoding=$encoding'></script></html>";
/*******/
          }
        }
      }
    }
  }
 
}
 
?>
1
1 / 1 / 0
Регистрация: 05.11.2009
Сообщений: 8
06.11.2009, 17:04  [ТС]
Милый Враг! Огромное спасибо за проделанную работу и вашу помощь!! Поправила коды как вы мне сказали, но наверное, я как-то неправильно интегрировала их в свою страницу. Потому что mail.php обрабатывает анкету лишь частично.
Если можно, я в вашем коде опишу, что я изменила у себя. Может быть, вы сможете помочь, в чем ошибка.
Пишу поэтапно свои вопросы. Возможно именно в них я допустила ошибку.Сначала что касается анкеты.Что я делала:

1.Для страницы анкеты есть шаблон сайта, в его шапке уже указаны тэги <html><head><title></title></head><body>
Поэтому их я не писала, т.е. щас поправлю код который вы прислали,как я его сделала. В принципе изменений больше не вносила. Есть только уточнение, что поля Имена и Имена 2 не являются обязательными к заполнению. Что вышло когда все это внесла в свой код - просто перестала считаться общая сумма, та что раньше выводилась автоматически, даже не понимаю, почему, потому что в скрипте так же ничего не меняла,только добавила еще нужные мне чекбоксы. Код кот. ниже я внесла в шаблон своего сайта.


файл anketa.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<script language="JavaScript">
<!--
function sums()
{
 sum=0;
 for(i=1;i<22;i++)
 {
  var elem=document.getElementById("r"+i);
  if(elem.checked)sum=sum+parseInt(elem.value);
 }
 document.formText.sumOut.value=sum;
}
function setChecked(obj)
   {
   var str = document.getElementById("text").innerHTML;
   str = (str == "отметить" ? "снять" : "отметить");
   document.getElementById("text").innerHTML = str;
 
   var check = document.getElementsById("r"+i);
   for (var i=1; i<check.length; i++)
      {
      check[i].checked = obj.checked;
      }
   }
//-->
</script>
  
<form method="post" form action="mail.php">
E-mail*<input type="text" name="Data1" size="40"> <Br>
Пол*<select name="Data2">
      <option value="m">мужской</option>
      <option value="f">женский</option>
      </select>
Имя*<input type="text" name="Data3" size="40"><br>
Имена <textarea name="Data4" cols="32" rows="3"></textarea><br>
Имена2<textarea name="Data5" cols="32" rows="3"></textarea><br>
Выбор чекбоксов
<input type="checkbox" name="checkbox1" value="1" id="r1" onchange="sums()">text<br>
<input type="checkbox" name="checkbox2" value="1" id="r2" onchange="sums()">text<br>
<input type="checkbox" name="checkbox3" value="1" id="r3" onchange="sums()">text<br>
 
<input name="sumOut" type="text" onMouseMove="sums()" readonly size="2">
 
<input type="text" name="hida2" value="" maxlength="100" size="3" style="display : none;">
 
<input type="submit" class="btn" value="Отправить" name="Submit" >
 
<input type="reset" class="btn" value="Очистить" name="Clear">
</form>

****************
Теперь вопросы по файлу mail.php

2.Data4 и Data5 заменила, т.к. эти поля у меня не обязательны к заполнению - возможно заменила неправильно, убрала только то что в скобках и else. Вот так
if ($_POST["Data4"]=='')
{

3. В строке $to =$_POST["xxxx@xx.xx"]; то что было в кавычках заменила на свой ящик, т.к. эти данные должны идти ко мне на ящик,а не к тем, кто заполнял анкету.Опять возможно неправильно заменила.

4. $message = "Электронный адрес:$Data1::::::::::Пол:$Data2:::::::: ::Имя:$Data3:::::::::Имена:$Data4::::::: ::Имена2:$Data5:::::::::IP-адрес:$_SERVER[REMOTE_ADDR]"; - В этой строке ничего не меняла, однако, насколько я поняла в теле сообщения не будут указываться выбранные клиентом чекбоксы, т.к. чекбоксы относятся не к Data5, а отдельно, перед ними я написала "Выбор чекбоксов".Т.е., наверное, они должны идти в теле сообщения отдельным полем. Помогите их прописать мне в теле сообщения и этом рнр-коде,чтоб данные их них отправлялись так же на ящик.
5. В этой строке echo "Сообщение успешно отправлено<address>".$_POST["Data1"]."</address>";} заменила Data1 на свой имэйл адрес, возможно -это посчиталось неправильным тоже.
Код как я поменяла, ниже. Помогите мне понять и найти ошибки.

Суть порблемы:
1. Перестало автоматически подсчитываться сумма
2. После нажатия Отправить не приходят данные никакие ко мне на имэйл
3. После нажатия Отправить не появляется окно оплаты Робокассы.

Что исправилось: данные из анкеты все-таки передаются теперь во второй файл обработки и если не заполнены какие-то поля - возвращает назад, однако когда их заполняешь и нажимаешь отправить все равно выдает, что либо не удалось заполнить форму - либо страница ошибки.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
 
if (!isset($_POST["hida2"]))
{
header ("location: anketa.php");
}
else // если есть hida2 то данные были присланы формой и надо все проверить
{
 
  if ($_POST["Data1"]=='')
  {echo "<div align=\"center\">Вы не указали Е-mail.<br><a href=anketa.php>Вернуться и правильно заполнить форму.</a></div>";}
  else // если указан Е-mail
  {
    if ($_POST["Data2"]=='')
    {echo "<div align=\"center\">Вы не указали свой пол.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
    else // если указан пол
    {
      if ($_POST["Data3"]=='')
      {echo "<div align=\"center\">Вы не указали имя.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
      else // если указано имя
      {
        if ($_POST["Data4"]=='')
        {
          if ($_POST["Data5"]=='')
          {
/*******/
$Data1=substr($_POST["Data1"],0,30);  
$Data2=substr($_POST["Data2"],0,30);  
$Data3=substr($_POST["Data3"],0,30);  
$Data4=substr($_POST["Data4"],0,30); 
$Data5=substr($_POST["Data5"],0,30); 
 
$to =$_POST["xxxx@xx.xx"];
$headers  = "Content-type: text/html; charset=windows-1251"."\r\n";
$subject = "Сообщение с сайта";
$message = "Электронный адрес:$Data1::::::::::Пол:$Data2::::::::::Имя:$Data3:::::::::Имена:$Data4:::::::::Имена2:$Data5:::::::::IP-адрес:$_SERVER[REMOTE_ADDR]";
$send=mail($to, $subject, $message, $headers);
if ($send)
{echo "Сообщение успешно отправлено<address>".$_POST["Data1"]."</address>";}
else
{echo "<div align=\"center\">Не удалось отправить сообщение.<br><a href=\"anketa.php\">Вернуться и повторить попытку.</a></div>";}; exit;}
 
 
mail ($to,$subject,$message) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо!<br>";
exit;
echo '<P>PAY</P>';
// 2.
// Оплата заданной суммы с выбором валюты на сайте ROBOKASSA
// Payment of the set sum with a choice of currency on site ROBOKASSA
 
// регистрационная информация (логин, пароль #1)
// registration info (login, password #1)
$mrh_login = "login";
$mrh_pass1 = "pasword";
 
 
$encoding=''; ////////////////////////////////////укажите!!!
 
// номер заказа
// number of order
$inv_id = 0;
 
// описание заказа
// order description
$inv_desc = "Pay";
 
// сумма заказа
// sum of order
$out_summ = $_POST["sumOut"];
 
// тип товара
// code of goods
$shp_item = "2";
 
// предлагаемая валюта платежа
// default payment e-currency
$in_curr = "PCR";
 
// язык
// language
$culture = "ru";
 
// формирование подписи
// generate signature
$crc  = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");
 
// форма оплаты товара
// payment form
print "<html><script language=JavaScript ".
      "src='https://www.roboxchange.com/mrh_summpreview.asp?".
      "MrchLogin=$mrh_login&OutSum=$out_summ&InvId=$inv_id&IncCurrLabel=$in_curr".
      "&Desc=$inv_desc&SignatureValue=$crc&Shp_item=$shp_item".
      "&Culture=$culture&Encoding=$encoding'></script></html>";
/*******/
          }
        }
      }
    }
  }
 
?>
[/QUOTE]
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.11.2009, 19:09
1.Для страницы анкеты есть шаблон сайта, в его шапке уже указаны тэги <html><head><title></title></head><body>
Извините, я не знал..
Сейчас поколдую, исправлю...
Насчет чекбоксов я упустил если честно, спешил, а вот окно робокассы показывалось.. может что не то удалили.. не переживайте, я счас все проверю и сделаю..

Добавлено через 14 минут
Только перед началом надо кое что уточнить.
поле скрытое hida2 для чего оно?
судя по скрипту, то количество чекбоксов должно быть 22, а у вас 3 ??
1
1 / 1 / 0
Регистрация: 05.11.2009
Сообщений: 8
06.11.2009, 19:28  [ТС]
Цитата Сообщение от Милый Враг Посмотреть сообщение
Только перед началом надо кое что уточнить.
поле скрытое hida2 для чего оно?
судя по скрипту, то количество чекбоксов должно быть 22, а у вас 3 ??
Спасибо вам огромное от души, что уделаете моей проблеме столько времени!
Насчет hida2 честно, я не все делала абсолютно сама в этой форме, и ума не приложу откуда это поле взялось и для чего оно..может какой скрытый смысл у него... Но можно думаю и без него попробовать.. Надеюсь не появится новых ошибок. а для чего обычно такие поля? может,для того чтобы пользователи не могли изменить значение суммы в окошке.
Но точно не знаю.
Чекбоксов у меня 21. Я 3 привела для примера, остальные я по примеру сама хотела сделать, ну б вас не напрягать сильно. Приницип у всех один и тот же, так что я по аналогии сама напишу. Имена у них всех различаются только номерами и текстом в поле Текст-ну вобщем названия разные. Value-это сумма каждого выбранного объекта.
Поле с чекбоксами идет отдельно после анкеты, после Data5.
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.11.2009, 21:38
Лучший ответ Сообщение было отмечено как решение

Решение

Да, я понял зачем оно. Можно было бы и без него, хотя оставьте его, возможно в другом оно будет нужно, так как я остального кода не видел...

вот совершенно рабочий пример.
проверил. Все считает и отправляет на почту. На скринах можите посмотреть (на картинках ниже)..
почту оформил в формате HTML чтобы вам было удобнее читать письма.

файл anketa.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<script language="JavaScript">
<!--
function sums()
{
 sum=0;
 for(i=1;i<4;i++)
 {  // укажите количество чекбоксов (вместо 4-х)
    // внимание число должно быть на 1 больше чем реальное кол-во
    // то есть если чекбоксов 3 то ставьте число 4!
  var elem=document.getElementById("r"+i);
  if(elem.checked) {sum=sum+parseInt(elem.value);}
 }
 document.formText.sumOut.value=sum;
}
function setChecked(obj)
   {
   var str = document.getElementById("text").innerHTML;
   str = (str == "отметить" ? "снять" : "отметить");
   document.getElementById("text").innerHTML = str;
 
   var check = document.getElementsById("r"+i);
   for (var i=1; i<check.length; i++)
      {
      check[i].checked = obj.checked;
      }
   }
//-->
</script>
 
<form name="formText" method="post" form action="mail.php">
E-mail*<input type="text" name="Data1" size="40"> <Br>
Пол*<select name="Data2">
      <option value="мужской">мужской</option>
      <option value="женский">женский</option>
      </select>
Имя*<input type="text" name="Data3" size="40"><br>
Имена <textarea name="Data4" cols="32" rows="3"></textarea><br>
Имена2<textarea name="Data5" cols="32" rows="3"></textarea><br>
Выбор чекбоксов<br>
<input type="checkbox" name="checkbox1" value="1" id="r1" onclick="sums()">text<br>
<input type="checkbox" name="checkbox2" value="1" id="r2" onclick="sums()">text<br>
<input type="checkbox" name="checkbox3" value="1" id="r3" onclick="sums()">text<br>
 
<input name="sumOut" type="text" value="0" readonly size="2">
 
<input type="text" name="hida2" value="" maxlength="100" size="3" style="display:none;">
<!--советую элемент hida2 переделать так
 
<input type="hidden" name="hida2" value="">
 
потому что элемент hidden  он сам по себе скрыт и предназначен
специально для того чтобы запоминать данные, которые пользователи
не должны видеть
-->
<input type="hidden" name="check_num" value="3"><!--укажите тут количество чекбоксов-->
 
<input type="submit" class="btn" value="Отправить" name="Submit">
 
<input type="reset" class="btn" value="Очистить" name="Clear">
</form>
число чекбоксов поменяйте в 2-х местах!!! В коде написано в коментариях

**********************

файл mail.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
 
if (!isset($_POST["sumOut"]))
{
header ("location: anketa.php");
}
else // если есть sumOut то данные были присланы формой и надо все проверить
{
 $sumout=$_POST["sumOut"];
 settype($sumout,'integer');
 if ($sumout>0) // сумма больше 0 (то есть чтото выбрано)
 {
 
  if ($_POST["Data1"]=='')
  {echo "<div align=\"center\">Вы не указали Е-mail.<br><a href=anketa.php>Вернуться и правильно заполнить форму.</a></div>";}
  else // если указан Е-mail
  {
    if ($_POST["Data2"]=='')
    {echo "<div align=\"center\">Вы не указали свой пол.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
    else // если указан пол
    {
      if ($_POST["Data3"]=='')
      {echo "<div align=\"center\">Вы не указали имя.<br><a href=\"anketa.php\">Вернуться и правильно заполнить форму.</a></div>";}
      else // если указано имя
      {
/*******/
$Data1=substr($_POST["Data1"],0,40);  // режем строку
$Data2=substr($_POST["Data2"],0,10);  // режем строку
$Data3=substr($_POST["Data3"],0,40);  // режем строку
$Data4=substr($_POST["Data4"],0,100); // режем строку
$Data5=substr($_POST["Data5"],0,100); // режем строку
$checkboxes=''; // не удаляйте ее, иначе может быть ошибка...
if (isset($_POST["check_num"]))
{
$check_num=$_POST["check_num"];
settype($check_num,'integer');
 
for ($i=1; $i<$check_num+1; $i++) // проверяем какие чекбоксы выбраны в массиве, чтобы по одному не проверять кучу
{
 if (isset($_POST["checkbox$i"])) // если есть такой
 {
 $checkboxes.='Переключатель '.$i.' : выбран<br>';
 }
}
 
}
 
 
$to =$_POST["Data1"];
$subject = "Сообщение с сайта";
$date=date ( "Y-m-d H:i:s",mktime());
############ начало письма в формате HTML
$message="<html>
<head><title>Новое письмо.</title></head>
<body>
<div align=\"left\">
<hr align=\"left\" size=\"1\" width=\"350\">
E-mail отправителя : $Data1<br>
Пол : $Data2 <br>
Имя : $Data3 <br>
Имена : $Data4 <br>
Имена2 : $Data5
<hr align=\"left\" size=\"1\" width=\"350\">
Список выбранных чекбоксов:<br>
$checkboxes
<hr align=\"left\" size=\"1\" width=\"350\">
Общая сумма : $sumout
<hr align=\"left\" size=\"1\" width=\"350\">
IP-адрес: ".$_SERVER['REMOTE_ADDR']."<br>
Время отправки: $date
<hr align=\"left\" size=\"1\" width=\"350\">
</div>
</body>
</html>";
############ конец письма в формате HTML
$headers  = "Content-type: text/html; charset=windows-1251 \r\n";
$send=mail($to, $subject, $message, $headers);
if ($send)  // если успешно отправлено письмо
{echo "<div align=\"center\">Спасибо!<br><p>PAY</p></div>";}
else  // если не отправлено письмо
{echo "<div align=\"center\">Не удалось отправить сообщение.<br><a href=\"anketa.php\">Вернуться и повторить попытку.</a></div>"; exit;}
 
// 2.
// Оплата заданной суммы с выбором валюты на сайте ROBOKASSA
// Payment of the set sum with a choice of currency on site ROBOKASSA
 
// регистрационная информация (логин, пароль #1)
// registration info (login, password #1)
$mrh_login = "login";
$mrh_pass1 = "pasword";
 
 
$encoding=''; ////////////////////////////////////укажите!!!
 
// номер заказа
// number of order
$inv_id = 0;
 
// описание заказа
// order description
$inv_desc = "Pay";
 
// сумма заказа
// sum of order
$out_summ = $_POST["sumOut"];
 
// тип товара
// code of goods
$shp_item = "2";
 
// предлагаемая валюта платежа
// default payment e-currency
$in_curr = "PCR";
 
// язык
// language
$culture = "ru";
 
// формирование подписи
// generate signature
$crc  = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");
 
// форма оплаты товара
// payment form
print "<html><script language=JavaScript ".
      "src='https://www.roboxchange.com/mrh_summpreview.asp?".
      "MrchLogin=$mrh_login&OutSum=$out_summ&InvId=$inv_id&IncCurrLabel=$in_curr".
      "&Desc=$inv_desc&SignatureValue=$crc&Shp_item=$shp_item".
      "&Culture=$culture&Encoding=$encoding'></script></html>";
/*******/
      }
    }
  }
 
 }
 else  // ничего не выбранно
 {
  echo "<div align=\"center\">Вы ничего не выбрали.<br><a href=anketa.php>Вернуться и правильно заполнить форму.</a></div>";
 }
}
 
?>
нам вы не указали одно поле, а именно
$encoding=''; ////////////////////////////////////укажите!!!
Миниатюры
Обработка формы - заказа   Обработка формы - заказа  
1
1 / 1 / 0
Регистрация: 05.11.2009
Сообщений: 8
07.11.2009, 13:44  [ТС]
Cпасибо огромное за предыдущий ответ! Все получилось!

Делала вторую такую же анкету, только там анкета состоит только из имэйла и чекбоксов. Все скопировала из документа по первой анкете.
В обработчике все изменила под 2 анкету, но стало выдавать ошибки в этом куске документа в самом конце
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
/*******/
      }
    }
  }
 
 }
 else  // ничего не выбранно
 {
  echo "<div align=\"center\">Вы ничего не выбрали.<br><a href=anketa.php>Вернуться и правильно заполнить форму.</a></div>";
 }
}
 
?>

вида
Parse error: syntax error, unexpected '}' эта ошибка в строке, которая сразу над словом else
Если убираю эту скобку
Parse error: syntax error, unexpected 'T_else'
Если убираю else, то ошибка вот такая
Parse error: syntax error, unexpected $end (и показывает на не существующую строку 528, хотя в моем документе их всего 527) - в чем может быть проблема, почему выдаются эти ошибки? ведь я ничего не меняла.
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
07.11.2009, 19:38
Так мне не понять.. дайте полностью то что вы исправили - то что выдает ошибку.. если конфиденциальные данные то можно в личку..
1
leoniddd
11.11.2010, 21:58
Здравствуйте, зашел в эту тему, т.к. искал для своего сайта форму анкеты с отправкой, переделал ее немного, все вроде работает, вот только сообщения после заполнения не приходят, форма перегружается и все. связано ли это как то с webformmailer.php или gdform.php? нужно ли это как то подстраивать под скрипт в своем хостинге? или выставить атрибуты для файлов?

пожалуйста подскажите что делать.
вот переделанный немного код этих двух файлов:
Вложения
Тип файла: txt anketa.txt (3.8 Кб, 65 просмотров)
Тип файла: txt mail.txt (4.4 Кб, 59 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2010, 21:58
Помогаю со студенческими работами здесь

Файл формы заказа
Всем привет! Есть задание и заключается в том, чтобы изменить форму заказа одного интернет магазина. Заказчик попросил перевести её на...

Настройка РНР-обработки формы заказа
Добрый день! Ребят, подскажите пожалуйста решение проблемы, я в коде совершенно не бум-бум но захотелось создать свой сайт визитку, скачал...

Из формы заказа на сайте, на почту приходят иероглифы
Добрый день! При заполнении формы заказа на сайте, на почту приходят вместо русских букв иероглифы. Дата: 28.6.2019 Время: 12:27 ...

Отправка формы после офрмление заказа клиенту и администратору
Хочу создать форму быстрого заказа на php проблема вот в чем при нажатии на кнопку открывается окно клиент вводит свои данные и кликает на...

Как передать любые переменные из формы на страницу завершения заказа
Привет всем! Есть лендинги, с которых уходят данные в црм систему (имя, телефон, адрес самого ленда, ютм метка и тд). Хотелось бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru