2014-01-02 3 views
1

Код ниже генерирует HTML-адрес электронной почты при отправке пользователем. Письмо отправляется успешно, но проблема, с которой я столкнулась, отображает содержимое массива, который будет содержать 1 или более значений.PHP html email array display

Изначально пользователь нажимает 1 или более флажков для получения номеров контейнеров. Вы увидите переменную для containerNumber ниже, которая находится в массиве. Пользователь также вручную вводит электронную почту грузовика, которая также превращается в переменную PHP. Имя пользователя, хранящееся в сеансе, также преобразуется в другую переменную PHP.

<?php 
    $containerArray = explode(',', $_POST['containerNumber']); 
    $trucker_email = mysql_real_escape_string(stripslashes($_POST['trucker_email'])); 
    $username = $_SESSION['username']; 

Теперь я генерировать переменные для электронной почты:

$to = $trucker_email; 
    $subject = 'Container Numbers'; 
    $headers = "From: " . $username . "\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $message = "You have received a message with Containter Numbers:<br />"; 
    $message .= "Greetings " . stripslashes($_POST['trucker_name']) . "<br />"; 

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

$message .= '<html><body>'; 
    $message .= '<table rules="all" style="border-color: #62c462" cellpadding="10">'; 
    $message .= '<tr style="background: #8DBFCF;"><th>Containers</th></tr>'; 
    $message .= print_r($containerArray, true); 
    $message .= '</table>'; 
    $message .= '<body></html>'; 

    @mail($to, $subject, $message, $headers); 
?> 

отправить электронную почту к себе, и когда я его просмотру, значение массива отображается следующим образом:

ContainersArray ([0] => CMAU123456 [1] => TRLU1234567) 

Это не то, как я хочу, чтобы он отображался. Я знаю, что мне нужно использовать цикл foreach, чтобы это нормально работало, но я не знаю, как и где начать цикл.

Пожалуйста, помогите.

+0

Вы недопустимые HTML. У вас НЕ может быть «простой» текст внутри таблицы, который НЕ содержится в комбинации строк + ячеек, например. '

Foo
' нормально, ' Foo
' является недействительным. –

ответ

5

Заменить:

$message .= print_r($containerArray, true); 

С:

foreach($containerArray as $container) { 
    $messages .= sprintf('<tr><td>%s</td></tr>', $container); 
} 
+0

Этот ответ выглядит многообещающим. Тем не менее, после тестирования электронное письмо больше не отображает значения массива. Есть предположения? – HoodCoderMan

+0

Ну, у всех остальных, похоже, есть такой же ответ, как у меня, более или менее, поэтому я уверен, что он прав. Что-то изменилось с тех пор, как вы его последний раз проверили? Возможно, структура данных этого массива не такая простая, как распечатка. Я не могу быть уверен. – Flosculus

0

Попробуйте это:

$message .= '<tr style="background: #8DBFCF;"><th>Containers</th></tr>'; 
foreach ($containerArray as $key => $value) { 
    # code... here action to display each value. exemple: 
    $message .= '<tr><td>'.$value.'</td></tr>'; 
} 
$message .= '</table>'; 
$message .= '<body></html>'; 
2
$message .= '<html><body>'; 
    $message .= '<table rules="all" style="border-color: #62c462" cellpadding="10">'; 
    $message .= '<tr style="background: #8DBFCF;"><th>Containers</th></tr>'; 
    foreach($ContainersArray as $key=>$val) { 
     $message .= '<tr><td>'.$val.'</td></tr>'; 
    } 
    $message .= '</table>'; 
    $message .= '<body></html>'; 

Выходной (макет на веб-странице показывает с какой-то стиль, но Я не копирую это здесь).

Контейнеры

CMAU123456

TRLU1234567