скрипт формы отправки. нужна помощь

12
lamansions
На сайте с 29.11.2007
Offline
54
1081

С php знакома совсем чуть-чуть, написала полтора скрипта на коленке, и сейчас один из них почему-то заглючил (изменений я никаких не вносила).

Помогите пожалуйста разобраться в чем проблема.

форма выглядит так:

<form action="mail2.php" method="post" name="forma_zakaza" id="zakaz" target="_blank">
<table width="100%" border="0" cellpadding="10">
<tr>
<td colspan="3" valign="top"><h2>Пожалуйста, заполните форму заказа:</h2></td>
</tr>
<tr>
<td width="300" valign="top" class="comic">Ваше Имя:</td>
<td colspan="2" valign="top"><input name="imya" type="text" id="imya" value="" size="50" class="formy"></td>
</tr>
<tr>
<td valign="top" class="comic">Ваш заказ подробно<br>
(можно скопировать описание):</td>
<td colspan="2" valign="top"><textarea name="zakaz" cols="50" rows="10" wrap="virtual" id="zakaz" class="formy"></textarea></td>
</tr>
<tr>
<td valign="top" class="comic">Способ доставки:</td>
<td colspan="2" valign="top"><label>
<input name="samovivoz" type="checkbox" id="samovivoz" value="samov">
<span class="comic">самовывоз</span></label>
<br>
<label>
<input name="dostavka" type="checkbox" id="dostavka" value="dost">
<span class="comic">доставка</span></label>
<br>
<label>
<input name="peresilka" type="checkbox" id="peresilka" value="peres">
<span class="comic">пересылка</span></label></td>
</tr>
<tr>
<td valign="top" class="comic">Ваш адрес и как добраться<br>
(подробно):</td>
<td colspan="2" valign="top"><textarea name="adres" cols="50" rows="10" id="adres" wrap="virtual" class="formy"></textarea></td>
</tr>
<tr>
<td valign="top" class="comic">Нужна консультация?</td>
<td colspan="2" valign="top"><label>
<input name="da" type="checkbox" id="da" value="da">
<span class="comic">да</span></label>
<br>
<label>
<input name="net" type="checkbox" id="net" value="net">
<span class="comic">нет</span></label></td>
</tr>
<tr>
<td valign="top" class="comic">Городской телефон (с кодом города):</td>
<td colspan="2" valign="top"><input name="telgor" type="text" id="telgor" value="" size="50" class="formy"></td>
</tr>
<tr>
<td valign="top" class="comic">Мобильный телефон:</td>
<td colspan="2" valign="top"><input name="telmob" type="text" id="telmob" value="" size="50" class="formy"></td>
</tr>
<tr>
<td valign="top" class="comic">Удобное время звонка:</td>
<td colspan="2" valign="top"><input name="vremya" type="text" id="vremya" value="" size="50" class="formy"></td>
</tr>
<tr>
<td valign="top" class="comic">Способ оплаты:</td>
<td colspan="2" valign="top"><label>
<input name="nal" type="checkbox" id="nal" value="nal">
<span class="comic">наличными при получении </span></label>
<br>
<label>
<input name="predoplata" type="checkbox" id="predoplata" value="predoplata">
<span class="comic">предоплата </span></label></td>
</tr>
<tr>
<td valign="top" class="comic">Ваш e-mail (обязательно!):</td>
<td colspan="2" valign="top"><input name="mail" type="text" id="mail" value="" size="50" class="formy"></td>
</tr>
<tr>
<td valign="top" class="comic">Номер ICQ:</td>
<td colspan="2" valign="top"><input name="icq" type="text" id="icq" value="" size="50" class="formy"></td>
</tr>
<tr>
<td valign="top" class="comic">Дополнительные контакты:</td>
<td colspan="2" valign="top"><input name="dop" type="text" id="dop" value="" size="50" class="formy"></td>
</tr>
<tr>
<td valign="top" class="comic">Откуда Вы про нас узнали?</td>
<td colspan="2" valign="top"><input name="otkuda" type="text" id="otkuda" value="" size="50" class="formy"></td>
</tr>
<tr>
<td colspan="3"><label>
<input type="reset" name="ochistit" value="Очистить форму" class="submit">
</label>
&nbsp;
<label>
<input type="submit" name="otpravit" value="Отправить заказ" class="submit">
</label></td>
</tr>
</table>
</form>

скрипт вот так:

<?php

$to = "адрес@yandex.ru";
$subject = "Новый заказ";
$message = "Имя пославшего:$imya
заказ подробно:$zakaz
Способы доставки::$samovivoz
Способы доставки:$dostavka
Способы доставки:$peresilka
адрес и как добраться:$adres
Нужна консультация?:$da
Нужна консультация?:$net
Городской телефон:$telgor
Мобильный телефон:$telmob
время звонка:$vremya
Способ оплаты:$predoplata
Способ оплаты:$nal
e-mail:$mail
ICQ:$icq
Дополнительные контакты:$dop
Откуда:$otkuda

IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить заказ !!!";
echo "<html><body><h3>";
echo "Спасибо за заказ в нашем интернет-магазине!";
echo "</h3>";
echo "Ваш заказ: $zakaz";
echo "<br>";
echo "Мы...... ля-ля-ля............";
echo "</html></body>";
exit;
?>

последнюю неделю примерно при обработке скрипта выдаются ошибки вида

(выдает незаполненные галочками поля):

Notice: Undefined variable: samovivoz in /home/m/mamalama/public_html/kak/mail2.php on line 8
Notice: Undefined variable: dostavka in /home/m/mamalama/public_html/kak/mail2.php on line 9
Notice: Undefined variable: da in /home/m/mamalama/public_html/kak/mail2.php on line 12
Notice: Undefined variable: predoplata in /home/m/mamalama/public_html/kak/mail2.php on line 17
Notice: Undefined variable: nal in /home/m/mamalama/public_html/kak/mail2.php on line 18

в чем проблема?

хотелось бы еще чтобы в случае если форма типа этого

<label>
<input name="net" type="checkbox" id="net" value="net">
<span class="comic">нет</span></label>

незаполнена, то в итоге отсылки формы (в письме) она бы не отражалась вовсе...

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

Лёлик
На сайте с 28.04.2006
Offline
54
#1

PHP вам сообщает, что переменные не инициализированы. Если это нормально, то

первой строчкой в php скрипте добавте:

error_reporting(E_ALL ^ E_NOTICE);
R
На сайте с 24.08.2006
Offline
31
#2

Помоему, хотя я могу ошибаться, у Вас проблема с конкатенацией строк.

Вот, к примеру, Вы пишите

echo "Ваш заказ: $zakaz";

А нужно, на мой взгляд, так:

echo "Ваш заказ: ".$zakaz;
, ну или с одиночными кавычками, здесь без разницы (только будьте осторожны если потребуется перевод строки \n)

print 'Ваш заказ: '.$zakaz;

И так по всему тексту.

lamansions
На сайте с 29.11.2007
Offline
54
#3
Лёлик:
PHP вам сообщает, что переменные не инициализированы. Если это нормально, то
первой строчкой в php скрипте добавте:

Спасибо, но вы могли бы прокомментировать, то Вы имели ввиду под "Если это нормально"?

и что дает эта строчка? я просто совсем ничего не понимаю пока а чтение про php пока меня только запутывает еще больше

lamansions
На сайте с 29.11.2007
Offline
54
#4
Romanuser:
Помоему, хотя я могу ошибаться, у Вас проблема с конкатенацией строк.
Вот, к примеру, Вы пишите
echo "Ваш заказ: $zakaz";

А нужно, на мой взгляд, так:
echo "Ваш заказ: ".$zakaz;
, ну или с одиночными кавычками, здесь без разницы (только будьте осторожны если потребуется перевод строки \n)
print 'Ваш заказ: '.$zakaz;

И так по всему тексту.

посмотрела, и правда лажа какая-то с кавычками везде. все потому что я не совсем понимаю как надо и почему так...

но вот все же почему мне скрипт ошибки выдает? на передачу формы это не влияет но те, кто ее заполняет, порой пугаются.

Лёлик
На сайте с 28.04.2006
Offline
54
#5

Romanuser, вам нужно прочитать про интерполяцию строк в двойных кавычках.

lamansions, ошбика получается из-за того что пользователь не заполнил все поля в форме. Строчка, которую я вам написал, сообщает интепретатору PHP, чтобы он не сообщал о таких ошибках. Рекомендую к скачиванию PHP-мануал

P.s: С кавычками все в порядке.

lamansions
На сайте с 29.11.2007
Offline
54
#6

Лёлик, спасибо Вам огромное!

мануал тоже посмотрю с удовольствием...

а с кавычками я сейчас проглядывала и меня смутила эта строка


$message = "Имя пославшего:$imya

строку сейчас впишу. после этого да?

<?php

т.е. получится так:

<?php
error_reporting(E_ALL ^ E_NOTICE);

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

DI
На сайте с 03.01.2007
Offline
123
#7

echo "Ваш заказ: $zakaz"; - так можно, в двойных кавычках обрабатываются переменные. В апострофах - не обрабатываются.

lamansions:
и еще все же мне странно. скрипт работает полгода, а ошибки только сейчас.

Возможно, на сервере обновили версию PHP или просто изменили настройки по умолчанию.

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
DI
На сайте с 03.01.2007
Offline
123
#8

дубль-дубль

dvaes
На сайте с 03.09.2007
Offline
65
#9

пхп сообщает, что такие переменные не были определены, а именно в этом случае - не поставлены галки в хтмле, вот и переменных нет.

правильней будет делать проверку таких данных. например,


echo "Способы доставки: ".(isset($_POST['samovivoz']) ? "ДА" : "НЕТ")."
Способы доставки: ".(isset($_POST['dostavka']) ? "ДА" : "НЕТ");

кстати, при регистер глобалс офф Ваш скрипт работать не будет

lamansions
На сайте с 29.11.2007
Offline
54
#10

dvaes, спасибо!

скажите пожалуйста чем лучше делать так как Вы написали, а не так как написал Лелик? его строчку поставила, пока работает...

такую перепроверку надо делать во всех позициях или как?

кстати, при регистер глобалс офф Ваш скрипт работать не будет

можно для дураков. что это такое?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий