Отправка данных с сайта на e-mail, где содержание письма соответствует опред. функции

Гриша К.

Новичок
Отправка данных с сайта на e-mail, где содержание письма соответствует опред. функции

Здравствуйте. Подскажиет пожалуйста варианты решения, моего вопроса.

Вопрос такой:
При отправлении информации на почтовый ящик, я хочу чтобы содержание письма отображалось в соответсвии с функцией (mail_cart_redox), которая определенным образом отбирает и выводит необходимые мне данные.
Для этого, в функции mail ($toaddress, $subject, $mailcontent, $fromaddress), $mailcontent - которая отвечает за содержание сообщения, я приравниваю к функции mail_cart_redox.
В результате чего, после отправки письма, данные этой функции отображаются в браузере, что мне совсем ненужно.

НАПИШИТЕ ПОЖАЛУЙСТА, КАК ОТПРАВИТЬ ПИСЬМО, ЧТОБЫ ТЕКСТ ПИСЬМА СООТВЕТСВОВАЛ ФУНКЦИИ, КОТОРАЯ ОТВЕЧАТЕ ЗА ВЫВОД НУЖНЫХ МНЕ ДАННЫХ.
функцию mail_cart_redox, я описал ниже, чтобы было понятно за чем она мне нужна.

PHP:
$toaddress = '[email protected]';
$subject = 'Оформление заказа в интернет-магазине';
$mailcontent = mail_cart_redox($_SESSION['cart_redox']);
$fromaddress = 'From: [email][email protected][/email]';

mail($toaddress, $subject, $mailcontent, $fromaddress );


Функция mail_cart_redox()
PHP:
function mail_cart_redox($cart_redox)
{

  global $_SESSION;
  
  echo "<br>-------------";
  echo "<br> БИОТРЕНАЖЕРЫ | Представлены компанией ОАО \"Редокс\" |";

  //Отобразить каждый элемент в виде новой строки
  foreach ($cart_redox as $idredox => $qty_redox)
  {
    $redox = get_redox_details($idredox);
	if($redox)
      {
    echo "<br>---";
    echo "<br>Марка. Название изделия: ".$redox['title'];
    echo "<br>Размер: ".$redox['razmer']."\n";
    echo "<br>Цена: ".number_format($redox['price'], 0)." руб.";
    echo "<br>Кол-во: ".$qty_redox;	
    echo "<br>Итого: ".number_format($redox['price']*$qty_redox, 0)." руб.\n";
      }
  }

}
 

domino

Новичок
ЧТОБЫ ТЕКСТ ПИСЬМА СООТВЕТСВОВАЛ ФУНКЦИИ - чего-то ты гонишь. это раз. два - почему ты не можешь вернуть из своей функции строку (конкатенация) и запостить эту строку на мыло абоненту??
 

Гриша К.

Новичок
domino, спасибо за ответ, чего-то я запутался, напиши пожалуйст что ты имееш ввиду.

Я пробовал вот, так наример:
показываю кусок из функции:
PHP:
  foreach ($cart_redox as $idredox => $qty_redox) 
  { 
    $redox = get_redox_details($idredox); 
    if($redox) 
      { 
    $display = "<br>---"; 
    ."<br>Марка. Название изделия: ".$redox['title']
    ."<br>Размер: ".$redox['razmer']."\n"
    ."<br>Цена: ".number_format($redox['price'], 0)." руб."
    ."<br>Кол-во: ".$qty_redox
    ."<br>Итого: ".number_format($redox['price']*$qty_redox, 0)." руб.\n"; 
      } 
  } 
return $display;
Но тогда выводится только первое значение цикла.
 

moxnatiy

Новичок
PHP:
$display = '';
foreach ($cart_redox as $idredox => $qty_redox) 
  { 
    $redox = get_redox_details($idredox); 
    
if($redox) 
      { 
    $display .= "<br>---"; 
    ."<br>Марка. Название изделия: ".$redox['title'] 
    ."<br>Размер: ".$redox['razmer']."\n" 
    ."<br>Цена: ".number_format($redox['price'], 0)." руб." 
    ."<br>Кол-во: ".$qty_redox 
    ."<br>Итого: ".number_format($redox['price']*$qty_redox, 0)." руб.\n"; 
      } 
  } 
return $display;
 

Гриша К.

Новичок
Полукондуктор, спасибо за ответ.
А что это такое ob_start, ob_get_contents и ob_end_clean, это функкции или, что, а в php знаний имею маловато, поэтому некоторые вещи для меня совсем не понятны.

-~{}~ 18.08.05 17:22:

moxnatiy, спасибо большое за ответ, смысл вроде понятен, обязательно попробую код.
 
PHP:
$toaddress = '[email protected]';
$subject = 'Оформление заказа в интернет-магазине';

ob_start();
mail_cart_redox($_SESSION['cart_redox']);
$mailcontent = ob_get_contents();
ob_end_clean();
$fromaddress = 'From: [email protected]';

mail($toaddress, $subject, $mailcontent, $fromaddress );

mail_cart_redox использовать первоначальный вариант (с echo)

-~{}~ 18.08.05 17:28:

Эти функции обеспечивают буферизированный вывод. Т.е. все что идет на выход, переправляется в буфер, откуда его содержимое можно потом забрать. Подробнее - в доки.
 

Гриша К.

Новичок
Полукондуктор, спасибо большое за ответ и за пояснение, попробую разобраться с вашим вариантом.
 
Сверху