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

Обьясните как вывести значения checkbox!

25.07.2009, 13:57. Показов 26241. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть форма обратной связи всё работает нормально, но вот не могу понять как вывести в тело письма значения отмеченых чекбоксов, обьясните пожалуйсто! Вот сама форма:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form name="zacaz" action="rashet_form.php" method="POST" enctype="multipart/form-data">
<font size="4">Посчитать стоимость</font><br>
<br>*Имя&nbsp; <input name="neim" size="80" value=""><br><br>
*Телефон для связи &nbsp; <input name="tel" size="64" value="" type="text"><br><br>
*e-mail&nbsp; <input name="mail" size="79" value="" type="text"><br><br>&nbsp;
*Что бы Вы хотели просчитать?<br>&nbsp;
<input name="vb" value="кухня" type="checkbox"> кухня <input name="vb" value="детская" type="checkbox"> детская <input name="vb" value="шкафы купе" type="checkbox"> шкафы купе <input name="vb" value="мебель для дома" type="checkbox"> мебель для дома <input name="vb" value="мебель для офиса" type="checkbox"> мебель для офиса <br>&nbsp;
<input name="vb" value="роспись стен" type="checkbox"> роспись стен <input name="vb" value="мягкая мебель" type="checkbox"> мягкая мебель <input name="vb" value="текстиль" type="checkbox"> текстиль <input name="vb" value="свет" type="checkbox"> свет <input name="vb" value="полы" type="checkbox"> полы <br>&nbsp;
<input name="vb" value="докаративная отделка" type="checkbox"> докаративная отделка <input name="vb" value="роспись по стеклу" type="checkbox"> роспись по стеклу<br>
<br>&nbsp;Описание<br><br>
<textarea name="opis" rows="10" cols="67"> метраж, количество, опишите своими словами что именно Вам хотелось бы заказать
</textarea> <br>
<br>Присоединить файл: <input name="fail" size="20" value="" type="file"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="otpr" value="Отправить" type="submit">
</form>
Добавлено через 2 часа 14 минут 59 секунд
Разобрался сам, вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$msg.=" ";
$chs=$_POST['vb'];
if($chs)
{
   foreach($chs as $tmp)
   {
      $tmp=stripslashes($tmp);
      $msg.="$tmp, ";
   }
}
else 
{
   $msg.="НЕТ";
}
$msg.="\r\n";
а вот как теперь ещё и файл прилепить к письму?
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2009, 13:57
Ответы с готовыми решениями:

Как вывести результат checkbox на другую страницу?
&lt;?php $t = &quot;Зарплата&quot;; $t = &quot;Трудовой процесс&quot;; $t = &quot;Коллектив&quot;; ...

Из базы данных вывести значения в checkbox
Подскажите пожалуйста как из базы данных вывести значения в checkbox. Сейчас это выглядит так &lt;dl class=&quot;dropdown&quot;&gt; ...

Как получить значения нескольких checkbox?
как получить значения несколько checkbox code : $query=mysql_query(&quot;SELECT * FROM `users`&quot;); ...

18
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
26.07.2009, 10:13
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Pitmen Посмотреть сообщение
а вот как теперь ещё и файл прилепить к письму?
Вот, небольшой класс
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
<?
class mime_mail {
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;
 
function mime_mail() {
$this->parts = array();
$this->to =  "";
$this->from =  "";
$this->subject =  "";
$this->body =  "";
$this->headers =  "";
}
 
function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
$this->parts [] = array (
 "ctype" => $ctype,
 "message" => $message,
 "encode" => $encode,
 "name" => $name
);
}
 
function build_message($part) {
$message = $part["message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}
 
function build_multipart() {
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
for($i = sizeof($this->parts)-1; $i>=0; $i--) $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
return $multipart.=  "--\n";
}
 
function send() {
$mime = "";
if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
if (!empty($this->headers)) $mime .= $this->headers. "\n";
if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain");   
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
mail($this->to, $this->subject, "", $mime);
}
}?>
Использование:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?
$attachment = fread(fopen("file.zip", "r"), filesize("file.zip")); 
$mail = new mime_mail();
$mail->from = "my@e-mail.com";
$mail->headers = "Errors-To: [EMAIL=my@e-mail.com]my@e-mail.com[/EMAIL]";
$mail->to = "333@mail.ru";
$mail->subject = "PHP atachment";
$mail->body = "Get your file!";
$mail->add_attachment("$attachment", "file.zip", "Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgEASABIAAD/7QT+UGhvdG9zaG");
$mail->send();
?>
3
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
02.04.2010, 10:45
К вопросу о выводе в теле письма значений чекбоксов, не разобрался куда нужно вставить код, напишите пожалуста весь код обработчика формы
0
 Аватар для Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
02.04.2010, 11:18
чекбоксы имеют значения либо 1 либо 0, просто приписывай нужной переменной эти значения
1
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
02.04.2010, 11:39
мне бы код глянуть, чтоб разобраца, так не врубаюсь
0
 Аватар для Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
02.04.2010, 12:59
PHP
1
2
3
4
5
6
7
8
<?php
if($_POST[имя чекбокса]{
echo 'имя чекбокса: ок';
}
else{
echo 'имя чекбокса: не был отмечен';
}
?>
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
02.04.2010, 13:07
PHP
1
2
3
4
5
6
7
8
9
10
<?php
for($i=0;$i<count($_POST['имя чекбокса']);$i++){
if(isset($_POST['имя чекбокса'][$i])){
echo "{$_POST['имя чекбокса'][$i]}: ок";
}
else{
echo "{$_POST['имя чекбокса'][$i]}: не был отмечен";
}
}
?>
0
 Аватар для Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
02.04.2010, 13:11
Цитата Сообщение от romchiksoad Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
<?php
for($i=0;$i<count($_POST['имя чекбокса']);$i++){
if(isset($_POST['имя чекбокса'][$i])){
echo "{$_POST['имя чекбокса'][$i]}: ок";
}
else{
echo "{$_POST['имя чекбокса'][$i]}: не был отмечен";
}
}
?>
А зачем считать элементы массива $_POST если там содержатся не только чекбоксы?
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
02.04.2010, 13:28
Я считаю элементы массива $_POST['имя чекбокса'], а не $_POST[]
0
 Аватар для Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
02.04.2010, 13:42
Цитата Сообщение от romchiksoad Посмотреть сообщение
Я считаю элементы массива $_POST['имя чекбокса'], а не $_POST[]
$_POST['чекбокс'] это же не массив, в нем содержится значение чекбокса
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
02.04.2010, 13:46
в $_POST содержаться имена полей из формы. В $_POST['имя_поля'] содержится значение из формы под именем 'имя_поля'. Если несколько полей формы имею в имени массив, то он доступен вот таким образом: $_POST['имя_поля'][0] - если индексный и $_POST['имя_поля']['имя ключа в массиве имя_поля'] если ассоциативный
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
02.04.2010, 15:48
Вот три разумных варианта работы с чекбоксами:
HTML5
1
2
3
4
5
6
7
8
9
<input type="checkbox" name="foo" value="42" />
 
<input type="checkbox" name="bar[1]" value="1" />
<input type="checkbox" name="bar[2]" value="1" />
<input type="checkbox" name="bar[3]" value="1" />
 
<input type="checkbox" name="lol[]" value="a" />
<input type="checkbox" name="lol[]" value="b" />
<input type="checkbox" name="lol[]" value="c" />
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (isset($_POST['foo'])) {
    echo "foo отмечен\n";
}
else {
    echo "foo не отмечен\n";
}
 
for ($i = 1; $i <= 3; $i++) {
    if (isset($_POST['bar'][$i])) {
        echo "bar[$i] отмечен\n";
    }
    else {
        echo "bar[$i] не отмечен\n";
    }
}
 
if (!empty($_POST['lol']) && is_array($_POST['lol'])) {
    echo "lol = [" . join(", ", $_POST['lol']). "]\n";
else {
    echo "в lol ничего не отмечено\n";
}
0
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
03.04.2010, 12:19
вот форма:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form method="post" action="rassylka.php">
        Ф.И.О.<br /><input type="text" name="name" size="50" onFocus="this.value='';this.onfocus=''"/><br />
        Ваш телефон<br /><input type="text" name="phone" onFocus="this.value='';this.onfocus=''"/><br />
        Ваш e-mail<br /><input type="text" name="email" onFocus="this.value='';this.onfocus=''"/><br />
        По каким разделам Вы желаете получать рассылку?<br />
        <input type=checkbox name="chb[]" value="горящие туры"> Горящие туры<br />
        <input type=checkbox name="chb[]" value="спецпредложения"> Спецпредложения<br />
        <input type=checkbox name="chb[]" value="акции"> Акции<br />
        <input type=checkbox name="chb[]" value="сборные туры"> Сборные туры по России<br />
        <input type=checkbox name="chb[]" value="новости туризма"> Новости туризма<br /><br />
        <input type="submit" value="Отправить">
        </form>
а вот обработчик формы, в него еще не внедрена обработка чекбоксов:
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
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
 
 
header('Content-type: text/html; charset=utf-8');
 
$address = 'jason1985@yandex.ru';
$sub = "подписчик";
$mes = "Автор назвался: $name \nУказал телефон: $phone \nУказал e-mail: $email";
 
 
 
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\n");
if ($verify == 'true')
{
echo "<p>Заявка принята.";
}
else 
{
echo "<p>Заявка не отправлена.";
}
echo "<br><a href=index.html>Вернуться на Главную</a>";
exit;
?>
видимо нужно чтобы в переменную $mes както попали выбранные чекбоксы, в php я полный чайник, как правильно сделать?

Добавлено через 20 часов 2 минуты
Пытаюсь использовать третий вариант камрада Vovan-VE, получил такой код
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
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (!empty($_POST['chb']) && is_array($_POST['chb']))
    {$chb = [" . join(", ", $_POST['chb']). "];}
else 
    {$chb = "разделы не выбраны";}
 
 
header('Content-type: text/html; charset=utf-8');
 
$address = 'jason1985@yandex.ru';
$sub = "подписчик";
$mes = "Автор назвался: $name \nУказал телефон: $phone \nУказал e-mail: $email \nВыбрал разделы: $chb";
 
 
 
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\n");
if ($verify == 'true')
{
echo "<p>Заявка принята.";
}
else 
{
echo "<p>Заявка не отправлена.";
}
echo "<br><a href=index.html>Вернуться на Главную</a>";
exit;
?>
вылазит ошибка: "Parse error: syntax error, unexpected '[' in /usr/home/kolumb/home/public_html/rassylka.php on line 6"
Напишите пожалуста где косяк в 6 строке?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
03.04.2010, 16:47
PHP
1
2
if (!empty($_POST['chb']) && is_array($_POST['chb']))
        {$chb = [" . join(", ", $_POST['chb']). "];}
Исправьте
PHP
1
2
if (!empty($_POST['chb']) && is_array($_POST['chb']))
        {$chb = "[" . join(", ", $_POST['chb']). "]";}
Сдается мне, что у Вас редактор без подсветки синтаксиса. Иначе бы таких проблем не было.
1
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
03.04.2010, 18:08
Vovan-VE,
Спасибо! все заработало, только теперь другая проблема, вместо русских букв отображаются знаки вопроса, кодировка указана utf-8, что может быть не так?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
03.04.2010, 18:12
А сам код сохранен в UTF-8 без сигнатуры BOM?
1
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
03.04.2010, 18:17
Vovan-VE
была сигнатура BOM, теперь все супер, огромное спасибо!!!
0
 Аватар для Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
13.04.2010, 11:07
Цитата Сообщение от romchiksoad Посмотреть сообщение
в $_POST содержаться имена полей из формы. В $_POST['имя_поля'] содержится значение из формы под именем 'имя_поля'. Если несколько полей формы имею в имени массив, то он доступен вот таким образом: $_POST['имя_поля'][0] - если индексный и $_POST['имя_поля']['имя ключа в массиве имя_поля'] если ассоциативный
А, понятно, только тогда будет не $_POST[имя чекбокса], а $_POST[имя группы чекбоксов]
0
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 3
05.03.2013, 12:33
Добрый день!
Прошу помочь! Скопировал часть кода с этой темы в подобную форму.
Теперь письмо с чекбоксами отправляет, но выдает при этом ошибку:
Notice: Undefined variable: message in /var/www/.../send.php on line 30 Сообщение отправлено!
Т.е. что-то не нравится ему в $mes.
Подскажите, что не так. Вот обработчик 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
<?php
if  (isset($_POST['name'])) {$name = $_POST['name'];if ($name == '') unset($name);}
if  (isset($_POST['lastname'])) {$lastname = $_POST['lastname'];if ($lastname == '') unset($lastname);}
if  (isset($_POST['email'])) {$email = $_POST['email'];if ($email == '') unset($email);}
if  (isset($_POST['message'])) {$message = $_POST['message'];if ($message == '') unset($message);}
if (!empty($_POST['chb']) && is_array($_POST['chb']))
        {$chb = "[" . join(", ", $_POST['chb']). "]";}
 
 
/* Проверяем заполнены ли все поля */ 
if  (isset($name) && isset($lastname) && isset($email) && isset($chb)) {
 
   /* Убираем все лишние пробелы и переносы строк, а также преобразуем  все теги HTML в  символы*/   
   $name =  htmlspecialchars(trim($name));
   $lastname =  htmlspecialchars(trim($lastname)); 
   $email =  htmlspecialchars(trim($email));
 
  /*  Проверяем правильность ввода email-адреса */ 
  if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",  $email)){ 
 
     echo "Вы неправильно ввели Email!";
  }
  else{
 
     /* Формируем сообщение */
     $address  = "hello@world.com";
     $sub  = "Тема";
     $mes  = "Имя: $name  \nФамилия: $lastname  \nEmail: $email \nЧекбокс: $chb \nКомментарий: \n$message";
 
     /* Отправка  сообщения */ 
     $verify =  mail ($address,$sub,$mes,"Content-type:text/plain;charset=UTF-8\r\nFrom:$email");
     if  ($verify == 'true'){
        echo  "Сообщение отправлено!";
     }
     else {
        echo  "Сообщение не отправлено!";
     }
  }
} 
else{
  echo  "Вы заполнили не все поля!"; 
} 
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2013, 12:33
Помогаю со студенческими работами здесь

Как вывести в оповещении checkbox, выделенный в форме обратной связи?
Уважаемые форумчане! Помогите &quot;добить&quot; php-код. Простая форма обратной связи, при заполнении которой, отправляется письмо на электронную...

Как сохранить значения для нескольких checkBox?
Для checkBox1 и 3 по умолчанию выставлено: Checked True и CheckSatate Checked (программно). Для checkBox2 по умолчанию выставлено:...

Как занести значения нескольких checkbox' ов в ajax?
Здравствуйте, дорогие форумчане! У меня такая проблема: Я, например, поставил галочки в нескольких чексбоксах, и их значения...

Как сохранить состояние checkBox при смене значения comboBox
Прошу помощи, имеется бд microsoft access, к которой присоединен comboBox, имеется несколько checkBox, как сохранить значения выбранных...

Как Сохранить значения checkbox на всех страницах wordpress для пользователя
Здравствуйте я новичок в wordpress и у меня возник вопрос как мне Сохранить значения checkbox на всех страницах wordpress для текущего...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
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. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru