Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

передача массива через mail ()

Обсуждение темы передача массива через mail () в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Есть html-форма бланка заказ с кучей textarea, radiobutom и checkbox. Ее заказчик заполняет и отправляет мне на почту. Используется стандартный механизм mail (). ...


Закрытая тема
 
Опции темы
Старый 18.01.2007, 22:42   #1
Есть html-форма бланка заказ с кучей textarea, radiobutom и checkbox. Ее заказчик заполняет и отправляет мне на почту. Используется стандартный механизм mail (). Вот, отрывок из кода формы:

<form action="mail.php" method="post">
Способы чего-то там:
<input name="sposob[0]" type="checkbox" value="вариант А">вариант А

<input name="sposob[1]" type="checkbox" value="вариант Б">вариант Б

<input name="sposob[2]" type="checkbox" value="вариант С">вариантС

<input name="Submit" type="submit" value="Отправить">
</form>

Скрипт mail.php
PHP код:
<?php 

if (!empty($_POST['sposob'])) { 
   foreach(
$_POST['sposob'] as $key => $value)  { 
      
$var_sposob .= $value.',';   
}
}

$to "[email protected]";  
$header="From: [email][email protected][/email]";  
$header.="\nContent-type: text/html; charset=\"windows-1251\"";  

$message 
Способ технологической подготовки измеряемой среды: 
      
{$_POST['var_sposob']} 
"
;  

$subject="=?windows-1251?B?"base64_encode("Новый заказ КОНГ-Прима"). "?="

mail($to$subject$message$header); 

echo 
"Спасибо.
Ваш заказ отправлен.

"
;  
?>
Суть вот в чем. Я не знаю КАК передавать данные в виде массивов. Читала про $_POST, про работу php с html-формами, про сами массивы. Блин, нигде не рассматривается такая мелочь, как у меня.
И еще, я проверяла состав глобальных переменных:
PHP код:
echo '<pre>';
var_dump($_POST); 
- там нет переменной $var_sposob (в которую я планировала записать выбранные значения через запятую как цельный текст). Может тут ошибка? А может $var_sposob нужно вручную добавлять в массив $_POST?
Беру {$_POST['sposob']} вместо {$_POST['var_sposob']}. Тогда функция обработки массива работает, если данные (к примеру) вывести в окно с сообщением об отправке письма. Но в полученном письме вместо отмеченных способов стоит слово Array.

Что-то я недопоняла видно в этом php...
 
Старый 18.01.2007, 22:42
Ссылки
Старый 20.01.2007, 19:40   #2
$var_sposob и не должно быть в $_POST. Вы же ее не персылаете, а заполняете при обработке $_POST.

Так что ваши данные, если они есть, лежат в переменной $var_sposob.

PHP код:
$message 
Способ технологической подготовки измеряемой среды: 
      
{$var_sposob} 
"

 
Старый 22.01.2007, 14:19   #3
Спасибо за разъяснение. Попробовала, работает.

Но я тут уже придумала сама, как сделаль:
PHP код:
<?php 

$to 
"[email protected]";   
$header="From: [email][email protected][/email]";   
$header.="\nContent-type: text/html; charset=\"windows-1251\"";   

$message 
Способ технологической подготовки измеряемой среды:"
if (isset($_POST['sposob'])) { 
   for (
$i=0;$i<=count($sposob);$i++){     
     if (isset(
$sposob[$i])) { 
     
$message $message "- " $sposob[$i] . "
"
;
     }
   }
}
$message $message"продолжение письма";

$subject="=?windows-1251?B?"base64_encode("Новый заказ КОНГ-Прима"). "?="

mail($to$subject$message$header); 

echo 
"Спасибо.
Ваш заказ отправлен.

"
;   
?>
Так можно?
 
Старый 23.01.2007, 21:42   #4
$sposob -- это откуда появилось?
 
Старый 23.01.2007, 22:01   #5
Кароче так:
$a - получаемый массив - который нужно в письмо загнать.

пишем так:

mail($to, $subject, print_r($a,true), $header);

$to, $subject, $header заполните сами .
print_r - замечательнейшая функция! Всем советую!

Еще могу посоветовать: не обязательно в хтмл писать name="sposob[2]" можно просто name="sposob[]" тогда масив сам отнумеруется. Но это конечено только в том случае, если не очень важна сама нумерация.

ЗЫ а что делают фигурные скобки в кавычках? Они что-нибудь значат???
 
Старый 24.01.2007, 12:32   #6
kost
Цитата:
$sposob -- это откуда появилось?
$sposob[] - он был всегда, это как раз массив выбранных чекбоксов. Просто теперь я его перебираю через
PHP код:
for ($i=0;$i<=count($sposob);$i++) 
, а не через
PHP код:
foreach($_POST['sposob'] as $key => $value
.
Сменила функцию, потому что мне она так понятнее (видно, сказываются школьные годы изучения паскаля)

Nark
Массив я пронумеровала сама, просто так - хотя знаю что можно и [].
А вот про функцию print_r можно уточнить?
У меня была проблема именно в правилах записи. Письмо-то большое, плюс многие переменные должны сначала обработаться, прежде чем "вбиваться" в текст. Короче, kost мне объяснил, что к чему.
Так вот, куда мне можно употреблять в таком случае функцию print_r ? Ведь просто в строку
PHP код:
mail($to$subjectprint_r($a,true), $header); 
не подходит.

Подсолнух добавил [date]1169631246[/date]:
kost
Цитата:
$sposob -- это откуда появилось?
$sposob[] - он был всегда, это как раз массив выбранных чекбоксов. Просто теперь я его перебираю через
PHP код:
for ($i=0;$i<=count($sposob);$i++) 
а не через
PHP код:
foreach($_POST['sposob'] as $key => $value
Сменила функцию, потому что мне она так понятнее (видно, сказываются школьные годы изучения паскаля)

Nark
Массив я пронумеровала сама, просто так - хотя знаю что можно и [].
А вот про функцию print_r можно уточнить?
У меня была проблема именно в правилах записи. Письмо-то большое, плюс многие переменные должны сначала обработаться, прежде чем "вбиваться" в текст. Короче, kost мне объяснил, что к чему.
Так вот, куда мне можно употреблять в таком случае функцию print_r ? Ведь просто в строку mail($to, $subject, print_r($a,true), $header); не подходит.
 
Старый 24.01.2007, 13:45   #7
Принт_р применить прямо к самому первому массиву. И получится в одну строчку, без циклов и без всего прочего.

Print_r функция печатает разные пееменные...
причем даже вложенные массивы
например
print_r(array(1,2,3,4,'asd','asd',array(1,2,3)));
выводит
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => asd
[5] => asd
[6] => Array
(
[0] => 1
[1] => 2
[2] => 3
)

)

Если написать принт_р($а, тру), то выведет не на печать, а вернет в виде строки.
Чтобы в хтмл выводить
(чтобы грамотно новые строки писались) рекомендую
echo nl2br(rpint_r($a,true));

А хелп самый лучший с примерами и коментариями - php.net . Сверху там есть поле поиска - лучше искать function search. Также там есть и на русском хелп.
 
Старый 24.01.2007, 13:45
Закрытая тема


Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свертование массива по заданным индексам Anthony ASP, Perl, PHP и MySQL 5 25.06.2008 18:13
Загрузка массива мувиков как одного anton Технологии Flash 0 07.10.2005 15:25
Сортировка массива Dariola HTML, CSS, JavaScript 4 30.04.2004 11:47
JavaScript и передача массива Spy ASP, Perl, PHP и MySQL 2 20.05.2003 15:04
JavaScript и передача массива Илья HTML, CSS, JavaScript 0 06.05.2003 20:33


Текущее время: 22:04. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум