2014-01-17 3 views
0

Я создал таблицу в форме, которая динамически генерирует поля ввода с именами на основе идентификатора местоположения. Теперь я хочу опубликовать это в другом файле, который отправляет информацию по электронной почте с помощью PHPMailer. Я узнал из других сообщений здесь, чтобы использовать публикацию массива, такую ​​как name="name[]", но теперь я зациклился на том, как добавить каждый элемент в тело электронной почты PHPMailer.Array Posting с PHPMailer

Вот что мой стол в моей форме выглядит следующим образом:

<table class="coach_log"> 

     <?php 
     $query = "SELECT location_id FROM users WHERE id = " . $_SESSION['user_id']; 

     $result = mysql_query($query, $connection); 
      if (!result) { 
       die("Database query failed: " . mysql_error()); 
      } 

      while ($row = mysql_fetch_array($result)) { 

       $location_id = $row["location_id"]; 

       $query = "SELECT first_name, last_name FROM users WHERE location_id = " . $location_id . " ORDER BY first_name"; 

       $result = mysql_query($query, $connection); 
        if (!result) { 
         die("Database query failed: " . mysql_error()); 
        } 

        while ($row = mysql_fetch_array($result)) { 
          $name = $row['first_name'] . " " . $row['last_name']; 

          echo ' <tr> 
            <td colspan="5" style="padding: 0; font-size: 20px; font-weight: 700;">' . $name . '</td> 
            </tr> 
            <input type="text" name="name[]" value="' . $name . '">'; 
         } 

      } 
      ?> 
</table> 

А вот пример того, как он будет обработан мой отдельный файл, который производит электронную почту:

$name = $_POST['name']; 

$htmlBody = " 
<table> 
<tr> 
     <td style=\"padding: 5px !important; text-align: left; line-height: 25px; font-family: sans-serif; font-size: 14px;\" bgcolor=\"#FFFFFF\">{$name}</td> 
</tr> 
</table>"; 

Как я получить $ htmlBody, чтобы сгенерировать все дополнительные строки, созданные в форме?


Использование Еогеасп работает очень хорошо, но у меня есть несколько входов под каждым именем, которые должны быть отправлены, как это:

foreach ($names as $name) { 
    $htmlBody .= " 
<tr> 
<td>{$name}</td> 
<td>{$today_actual}</td> 
<td>{$today_goal}</td> 
<td>{$month_actual}</td> 
</tr> 

Все они принадлежат вместе. Но если я сделаю отдельный foreach на каждом из них, я получу информацию в неправильном порядке. Есть идеи?

+0

, если они массивы, а затем использовать [Еогеасп()] (http://php.net/foreach) в петлю над ними ... –

ответ

0
// Make sure we're dealing with an array of names 
$names = is_array($_POST['name']) ? $_POST['name'] : array($_POST['name']); 

$htmlBody = "..."; // Header HTML 
foreach ($names as $name) { 
    $htmlBody .= "<tr><td>$name</td></tr>"; 
} 
$htmlBody .= "..."; // Footer HTML 
+0

Это работает очень хорошо, за исключением того, у меня есть несколько td в каждом tr для каждого имени. Я обновлю свой вопрос, чтобы проиллюстрировать. – Mike

0
$names= array_values($_POST['name']); 

foreach($names as $name) { 
    $htmlBody= $htmlBody . $name; 

}