Jump to content
  • 0

Отправка радиокнопки на email


apexis
 Share

Question

Пытаюсь отправить на email значение радиокнопки, но что-то оно не приходит.

<input type="radio" name="cargo" value="1" checked>Новая почта</input>
<input type="radio" name="cargo" value="2" >Интайм</input><br /><br />

switch ($_POST['cargo'])
{
case '1': echo "Новая почта";break;
case '2': echo "Интайм";break;
}

Что тут не так?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

у case не нужно кавычек

Без кавычек тоже не работает

Вот полный код, может найдете ошибку

<div class="mrg"><?

if(!preg_match('/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix',$_POST['email']) or !@$_POST['name'] or !@$_POST['phone'] or !@$_POST['text'])
{
echo '<input type="radio" name="cargo" value="1" checked>Новая почта</input> <input type="radio" name="cargo" value="2" >Интайм</input><br /><br />';
echo '<form action="/test/zakaz_courier.php" method="post">
<div style="padding:0">ФИО</div> <input type="text" name="name" value="'.@$_POST['name'].'" class="formfields" />';
if(@$_POST['submit'] and !@$_POST['name']){
echo '<span>Поле не заполнено</span>';
}

echo' <div>Телефон</div> <input type="text" name="phone" size="30" value="'.@$_POST['phone'].'" class="formfields" />';

if(@$_POST['submit'] and !@$_POST['phone']){
echo '<span>Поле не заполнено</span>';
}

echo' <div>E-mail</div> <input type="text" name="email" size="30" value="'.@$_POST['email'].'" class="formfields" /> ';
if(@$_POST['submit'] and !preg_match('/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix',$_POST['email'])){
echo '<span>Поле не заполнено или содержит ошибки</span>';
}

echo'<div>Количество</div> <input type="text" name="text" value="'.@$_POST['text'].'" class="formfields" style="width:50px;" /> ';
if(@$_POST['submit'] and !@$_POST['text']){
echo '<span>Поле не заполнено</span>';
}
echo '<br /> <input type="submit" value="Отправить" name="submit" class="sendbtn"/>

</form>';

}else{

$header="Content-Type: text/html; charset=windows-1251\n";
$body = 'количество: '.$_POST['text'].'<br />Телефон: '.$_POST['phone'].'<br />E-mail:'.$_POST['email'];
switch ($_POST['cargo'])
{
case 1: echo "Новая почта";break;
case 2: echo "Интайм";break;
}
$to = 'email@yandex.ru';
$subject = 'Паркес 7 от пользователя '.$_POST['name'];
mail($to,$subject,$body,$header);
echo '<span class="sendmsg" style="color:green">Спасибо, Ваш заказ принят.</span><br /><span><a href="http://lidomed.com.ua" style="text-decoration:none; float:left ">Вернуться на сайт</a> </span><span style="float:right; margin:0 20px 20px 0"><a href="javascript:history.back()" style="text-decoration:none">Заказать еще</a></span><br /><br />';
}
?>
<span style="float:right; margin-right:10px"><a href="line.php" style="text-decoration:none; text-shadow: 0 1px white">Вернуться назад</a></span></div><br /></div>

Edited by apexis
Link to comment
Share on other sites

  • 0

у Вас по submit срабатывает action формы, и все, что написали в приведенном выше коде, не работает

т.е. обработчиком формы является не приведенный код, а /test/zakaz_courier.php

Link to comment
Share on other sites

  • 0

у Вас по submit срабатывает action формы, и все, что написали в приведенном выше коде, не работает

т.е. обработчиком формы является не приведенный код, а /test/zakaz_courier.php

Этот код я взял со страницы zakaz_courier.php, которая лежит в папке test, а не с другой страницы.

Пробовал вводить # в action - тоже самое, не работает.

Edited by apexis
Link to comment
Share on other sites

  • 0

apexis, посмотрел внимательнее - у вас радио вообще вне формы выводятся

перепишите их внутри формы. и им нужно указать value, чтобы проще через case перебирать

<input type="radio" name="cargo" value="new" checked>Новая почта</input>
<input type="radio" name="cargo" value="intime" >Интайм</input>

и switch для этого не всегда подходит, но можно так подстраховаться

$cargo = (isset($_POST['cargo'])) ? $_POST['cargo'] : '';
switch ($cargo) {
case "new": $radio = "Новая почта";
break;
case "intime": $radio = "Интайм";
break;
default: $radio = "";
break;
}

потом $radio передаете в $body

Edited by strange_atom
Link to comment
Share on other sites

  • 0

Как по мне, еще удобнее, чем case, завести ассоциативный массив:


$cargo_values = array(1 => 'Новая почта', 2 => 'Интайм');
...
$cargo_value = isset($cargo_values[$_POST['cargo']]) ? $cargo_values[$_POST['cargo']] : $default_cargo;
...
echo $cargo_value;

И не стоит злоупотреблять выводом кучи HTML через echo, лучше пользоваться вставками <?=$something?> в HTML-части aka «нативной PHP-шаблонизацией» (опять же имхо).

  • Like 1
Link to comment
Share on other sites

  • 0

Как по мне, еще удобнее, чем case, завести ассоциативный массив:


$cargo_values = array(1 => 'Новая почта', 2 => 'Интайм');
...
$cargo_value = isset($cargo_values[$_POST['cargo']]) ? $cargo_values[$_POST['cargo']] : $default_cargo;
...
echo $cargo_value;

И не стоит злоупотреблять выводом кучи HTML через echo, лучше пользоваться вставками <?=$something?> в HTML-части aka «нативной PHP-шаблонизацией» (опять же имхо).

Сделал массивом, работает. Спасибо огромное всем за помощь.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy