Вопрос по PHP
Feb. 24th, 2009 12:46 pmТут как-то все дружно сказали, что я могу задавать вопросы по пхп? Вот у меня есть вопрос..
Есть у меня форма отправки сообщений с сайта. Есть скрипт, который из форм собирает в письмо все введенное. Имеет такую форму (кусок)
$theme = "Запрос о продаже софта";
$m = array('Имя*','Фамилия*','Отчество','Название компании*','Город','Телефон*','Факс','Электронный адрес*','Производитель*','Продукт*','Языковая версия*','Количество*','Тип лицензии');
$f = array('firstname','lastname','custom_1','company','city','phone','fax','email','custom_2','custom_3','custom_4','custom_5','custom_6');
Мне надо сделать так, чтобы он кроме самих введенных данных ($f) приписывал к ним еще и данные массива $m - то есть. чтбы письмо приходило в таком виде Имя: трататата, Фамилия: тратата и тд... пока приходит только нечто вида "трата, тратата, тратата" то есть, понять все не сложно, особенно если заглянуть на страницу, с которой оно послано и вуидеть там названия форм... но вот заглядывать-то не хочется, хочется, чтобы в письме сразу приходило. Я могу тупо во втором массиве текстом приписать все, что мне надо перед каждой переменной, или нет? Как это следует оформить?
Спасибо!
Есть у меня форма отправки сообщений с сайта. Есть скрипт, который из форм собирает в письмо все введенное. Имеет такую форму (кусок)
$theme = "Запрос о продаже софта";
$m = array('Имя*','Фамилия*','Отчество','Название компании*','Город','Телефон*','Факс','Электронный адрес*','Производитель*','Продукт*','Языковая версия*','Количество*','Тип лицензии');
$f = array('firstname','lastname','custom_1','company','city','phone','fax','email','custom_2','custom_3','custom_4','custom_5','custom_6');
Мне надо сделать так, чтобы он кроме самих введенных данных ($f) приписывал к ним еще и данные массива $m - то есть. чтбы письмо приходило в таком виде Имя: трататата, Фамилия: тратата и тд... пока приходит только нечто вида "трата, тратата, тратата" то есть, понять все не сложно, особенно если заглянуть на страницу, с которой оно послано и вуидеть там названия форм... но вот заглядывать-то не хочется, хочется, чтобы в письме сразу приходило. Я могу тупо во втором массиве текстом приписать все, что мне надо перед каждой переменной, или нет? Как это следует оформить?
Спасибо!
no subject
Date: 2009-02-24 10:02 am (UTC)Но в принципе, у тебя есть данные, у тебя есть справочник с названием полей. Соответственно на этапе формирования тела письма ты "склеиваешь" данные из первого массива и второго. Делаешь цикл for от 0 "и до обеда", склеиваешь соответствующие элементы двух массивов и присоединяешь их к строке, которая у тебя потом как тело сообщения пойдет.
no subject
Date: 2009-02-24 10:09 am (UTC)Насчет того, как оказываются - не суть, ибо скрипт работает, переменные собирает и в письмо вкладывает :)))
no subject
Date: 2009-02-24 10:21 am (UTC)Там есть примеры как организовать перебор элементов массива. Соответственно внутри цикла делаешь склейку элементов из двух массивов (в комменте есть, как) и присоединяешь (тоже в том же описании склейки есть) к переменной $message_body (например) и гонишь ее в отправку.
no subject
Date: 2009-02-24 10:11 am (UTC)no subject
Date: 2009-02-24 10:31 am (UTC)no subject
Date: 2009-02-24 10:35 am (UTC)no subject
Date: 2009-02-24 10:40 am (UTC)no subject
Date: 2009-02-24 02:55 pm (UTC)no subject
Date: 2009-02-24 03:26 pm (UTC)var arr1 = [...]
var arr2 = [...]
var body = arr1.join("\n") + "\n" + arr2.join("\n");
no subject
Date: 2009-02-24 03:28 pm (UTC)no subject
Date: 2009-02-24 03:49 pm (UTC)no subject
Date: 2009-02-24 03:29 pm (UTC)no subject
Date: 2009-02-24 10:14 am (UTC)foreach($m as $key=>$value){
$emailbody.=$key.':'.$value;
}
no subject
Date: 2009-02-24 10:16 am (UTC)no subject
Date: 2009-02-24 10:30 am (UTC)Чтобы просто слить два массива есть функция array_merge - она сливает два массива и возвращает результат. Вон описание с примерами - http://ua.php.net/manual/ru/function.array-merge.php
no subject
Date: 2009-02-24 10:55 am (UTC)no subject
Date: 2009-02-24 11:04 am (UTC)no subject
Date: 2009-02-24 02:34 pm (UTC)<?php
$emailbody='';
$fields_names = $m; // Имена переменных
$fields_values = $f; // должны быть осмысленными
foreach($fields_values as $key=>$value){
$emailbody.=$fields_names[$key].':'.$value."\n";
// если вывод в HTML, то после \n можно добавить <br>.
}
?>
Если душа просит чего-то красивого, то можно сделать милый массивчик
<?php
$fields=array();
foreach($f as $key=>$value){
$fields[$m[$key]]=$value;
}
?>
Если вывести результат var_dump($fields), то получится что-то вроде этого:
Array
(
'Имя*' => 'firstname',
'Фамилия*' => 'lastname',
'Отчество' => ''custom_1'
)
и т.д.
no subject
Date: 2009-02-24 03:37 pm (UTC)no subject
Date: 2009-02-24 05:36 pm (UTC)no subject
Date: 2009-02-24 07:01 pm (UTC)А так у тебя приведены только объявление двух массивов и какой код надо написать чтобы у тебя все заработало не очевидно. Хотя другие предлагают вполне годные решения, правда забывают о подробных комментариях. Ибо понять, что делают все эти точечки, стрелочки и скобочки тож сходу не так просто. :)
no subject
Date: 2009-02-24 07:17 pm (UTC)