Отправить массив писем (foreach) - PullRequest
0 голосов
/ 21 июля 2011

Мне нужно отправить массив продуктов по электронной почте с PHP, но у меня возникают проблемы с " foreach ".

Это мой код:

//Form
<form action="" method="post">
    <select name="product[]" class="product" >
      <option value="product1">product1</option>
      <option value="product2">product2</option>
      <option value="product3">product3</option>
    </select>
    <input type="text" name="boxes[]" value="Boxes:" class="boxesInput" size="20">
</form>

Это код jQuery для захвата данных (я работаю над WordPress и не могу найти способ сделать с $ _SERVER ['PHP_SELF'] ...

//jQuery
var productVal = jQuery(".product").val();
var boxesVal = jQuery(".boxesInput").val();

jQuery.post("sendemail.php",
            { boxes: boxesVal, product: productVal } );

Это файл sendemail.php

//sendemail.php

$producto = $_POST['product'];
$boxes = $_POST['boxes'];

$body = "Order Details \n" ;

Это беда , foreach:

foreach($producto as $id => $row )
{
 $body .= "Product: " .  $producto[$id]  . "\n";
 $body .= "Boxes: " .  $boxes[$id]  . "\n"; 
} 

$mailTo = 'my@email.com'; 
$subject = "Quotes Form";
$headers = 'From: <'.$mailTo.'> ' . "\r\n" . 'Reply-To: ' . $mailTo;
mail($mailTo, $subject, $body, $headers);

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Как указывает Серж, вам нужно сериализовать данные формы, чтобы php понял их.Вероятно, лучше использовать

$.post("sendmail.php", $("form").serialize());

для отправки данных формы.Другая проблема заключается в том, что вы объявляете переменную

$boxes = $_POST['boxes'];

, но foreach пытается получить доступ к $cajas[$id]?если вы измените цикл foreach на

foreach($producto as $id => $row )
{
 $body .= "Producto: " .  $producto[$id]  . "\n";
 $body .= "Cajas: " .  $boxes[$id]  . "\n"; 
} 

, он должен работать.Обратите внимание, что ваши элементы формы действительно подходят для генерации массивов, так как они принимают только отдельные значения.

0 голосов
/ 21 июля 2011

jQuery .val создаст массив JavaScript, который не совместим с массивом PHP. Вам нужно будет сериализовать в JavaScript и десериализовать в PHP:

Это одна из таких функций: http://code.activestate.com/recipes/414334-pass-javascript-arrays-to-php/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...