Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 177, средняя оценка - 4.61
Pitmen
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 1
#1

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

25.07.2009, 13:57. Просмотров 22195. Ответов 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";
а вот как теперь ещё и файл прилепить к письму?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2009, 13:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обьясните как вывести значения checkbox! (PHP):

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

Получать значения checkbox
Как получать значения checkbox, которые выбрал пользователь? value не вариант,...

Обьясните пожалуйста как это сделать
Я тут недавно решил заняться программированием...Выбрал язык PHP.Хочу сделать...

Как сделать checkbox отмеченным
Привет всем. Как сделать checkbox отмеченным? &lt;input name=&quot;dos&quot;...

Из базы данных вывести значения в checkbox
Подскажите пожалуйста как из базы данных вывести значения в checkbox. Сейчас...

Как получить значения нескольких checkbox?
как получить значения несколько checkbox code : ...

18
schdub
Эксперт С++
3016 / 1361 / 415
Регистрация: 19.01.2009
Сообщений: 3,615
Завершенные тесты: 1
26.07.2009, 10:13 #2
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от 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
jason46
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
02.04.2010, 10:45 #3
К вопросу о выводе в теле письма значений чекбоксов, не разобрался куда нужно вставить код, напишите пожалуста весь код обработчика формы
0
Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
02.04.2010, 11:18 #4
чекбоксы имеют значения либо 1 либо 0, просто приписывай нужной переменной эти значения
1
jason46
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
02.04.2010, 11:39 #5
мне бы код глянуть, чтоб разобраца, так не врубаюсь
0
Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
02.04.2010, 12:59 #6
PHP
1
2
3
4
5
6
7
8
<?php
if($_POST[имя чекбокса]{
echo 'имя чекбокса: ок';
}
else{
echo 'имя чекбокса: не был отмечен';
}
?>
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
02.04.2010, 13:07 #7
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 #8
Цитата Сообщение от 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
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
02.04.2010, 13:28 #9
Я считаю элементы массива $_POST['имя чекбокса'], а не $_POST[]
0
Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
02.04.2010, 13:42 #10
Цитата Сообщение от romchiksoad Посмотреть сообщение
Я считаю элементы массива $_POST['имя чекбокса'], а не $_POST[]
$_POST['чекбокс'] это же не массив, в нем содержится значение чекбокса
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
02.04.2010, 13:46 #11
в $_POST содержаться имена полей из формы. В $_POST['имя_поля'] содержится значение из формы под именем 'имя_поля'. Если несколько полей формы имею в имени массив, то он доступен вот таким образом: $_POST['имя_поля'][0] - если индексный и $_POST['имя_поля']['имя ключа в массиве имя_поля'] если ассоциативный
0
Vovan-VE
13148 / 6531 / 1038
Регистрация: 10.01.2008
Сообщений: 15,071
02.04.2010, 15:48 #12
Вот три разумных варианта работы с чекбоксами:
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
jason46
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
03.04.2010, 12:19 #13
вот форма:
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
13148 / 6531 / 1038
Регистрация: 10.01.2008
Сообщений: 15,071
03.04.2010, 16:47 #14
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
jason46
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
03.04.2010, 18:08 #15
Vovan-VE,
Спасибо! все заработало, только теперь другая проблема, вместо русских букв отображаются знаки вопроса, кодировка указана utf-8, что может быть не так?
0
Vovan-VE
13148 / 6531 / 1038
Регистрация: 10.01.2008
Сообщений: 15,071
03.04.2010, 18:12 #16
А сам код сохранен в UTF-8 без сигнатуры BOM?
1
jason46
0 / 0 / 0
Регистрация: 02.04.2010
Сообщений: 5
03.04.2010, 18:17 #17
Vovan-VE
была сигнатура BOM, теперь все супер, огромное спасибо!!!
0
Seodaiter
6 / 6 / 0
Регистрация: 21.08.2009
Сообщений: 104
13.04.2010, 11:07 #18
Цитата Сообщение от romchiksoad Посмотреть сообщение
в $_POST содержаться имена полей из формы. В $_POST['имя_поля'] содержится значение из формы под именем 'имя_поля'. Если несколько полей формы имею в имени массив, то он доступен вот таким образом: $_POST['имя_поля'][0] - если индексный и $_POST['имя_поля']['имя ключа в массиве имя_поля'] если ассоциативный
А, понятно, только тогда будет не $_POST[имя чекбокса], а $_POST[имя группы чекбоксов]
0
NeexKZ
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 3
05.03.2013, 12:33 #19
Добрый день!
Прошу помочь! Скопировал часть кода с этой темы в подобную форму.
Теперь письмо с чекбоксами отправляет, но выдает при этом ошибку:
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
05.03.2013, 12:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2013, 12:33
Привет! Вот еще темы с решениями:

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

Как вывести значения в цикле
Функция explode - берёт строку и разбивает на элементы, разделителем в данном...

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru