Php mail - переменная сообщения, содержащая массив и условия

Я пытался отправить электронное письмо, содержащее html-код, сгенерированный php.

Контекст таков: я использую php для создания веб-страницы, и я пытаюсь отправить эту веб-страницу по электронной почте, скопировав код, который я использовал для создания веб-страницы, и вставив сообщение с помощью функции почты.

Я нашел способ создать электронное письмо, содержащее переменные php, как в следующем примере:

 [...]   
$message = "<address>
                            <strong>Adresse de livraison:</strong><br>
                             $prenom  $nom<br>
                             $adress1<br>
                             $adress2<br>
                             $postalcode  $ville,  $country
                        </address>";
    mail($destinataire, $objet, $message, $headers);
[...]

Все было идеально, письмо было отправлено правильно.

Но теперь мой код содержит части php, как в следующем примере:

 if ($disque!= 'No') {
<tr>
    <td>Disque avant :  $disque</td>
    <td class='text-center'>

        $selected_product[] = $disqueav;
        $data = bdd_select('SELECT Price FROM products WHERE Nom = ?', $selected_product);
        echo $data['0']['Price'] . '€';
        $subtotalprice = $data['0']['Price'] + $subtotalprice;

    </td>
    <td class='text-center'>1</td>
    <td class='text-right'> $data['0']['Price'] . '€';</td>
</tr>
}

И это не работает из-за такого массива, как $ data ['0'], даже если я использую для него одну запятую и двойную запятую для переменной $ message.

Я получаю такую ​​ошибку:

Parse error: syntax error, unexpected ']', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

У меня вопрос: есть ли способ написать эту часть кода, чтобы я не получал никаких ошибок и мог отправить страницу точно так, как я ее видел.

Спасибо большое.

Вы не можете так смешивать PHP и HTML. Вы должны закрыть свой PHP перед выводом HTML, а затем снова открыть PHP, чтобы использовать больше кода PHP.

John Conde 12.08.2018 17:42

Я узнал, что <? $ message = "Hello $ name"?> было самым простым способом.

Max 12.08.2018 18:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
123
2

Ответы 2

Попробуйте использовать $ data [0] ['price']; Если по-прежнему возникает ошибка, оставьте комментарий в журналах Apache.

Спасибо ! Это помогает, но по-прежнему возникают проблемы с $ selected_product [] = $ disqueav. Ошибка для этой строки - Ошибка синтаксического анализа: синтаксическая ошибка, непредвиденный ']', ожидаемый идентификатор (T_STRING), переменная (T_VARIABLE) или число (T_NUM_STRING)

Max 12.08.2018 16:54

Прокомментируйте фрагмент кода, в котором вы определили переменную $ disqieav.

Anshu Kumar 12.08.2018 17:01

Это извлечение переменной из $ _post. Но я понимаю, что проблема в том, как написано $ selected_product [].

Max 12.08.2018 17:03

извлечь ($ _ POST);

Max 12.08.2018 17:03

Хорошо. Вместо использования $ selected_product [] = $ disqueav; попробуйте использовать array_push ($ selected_product, $ disqueav);

Anshu Kumar 12.08.2018 17:04

Спасибо, вроде работает, этой ошибки больше нет. Теперь у меня есть только несколько неопределенных переменных: subtotalprice, data, selected_product. Я сделаю какой-нибудь тест.

Max 12.08.2018 17:18

Добро пожаловать, Если вам нужна дополнительная помощь, не стесняйтесь комментировать. Если ваша проблема решена, отметьте решение как решенное. Спасибо.

Anshu Kumar 12.08.2018 17:21

Просто заставьте переменную сообщения встраивать ваши строки сообщения в эту переменную. Также была проблема с $ data ['0']; Поскольку 0 - это целочисленный индекс, а не строка, это должно быть $ data [0], а не $ data ['0']. Я думаю, это сработает для вас. Я не смог правильно протестировать, потому что у меня нет базы данных.

$message = "<table><tbody>";
if ($disque!= 'No') {
    $message. = "<tr>
    <td>Disque avant :".  $disque."</td>
    <td class='text-center'>";

    $selected_product[] = $disqueav;
        $data = bdd_select('SELECT Price FROM products WHERE Nom = ?', $selected_product);
        $message .= $data[0]['Price'] . "€";
        $subtotalprice = $data[0]['Price'] + $subtotalprice;
        $message .= $subtotalprice;
    $message .= "</td>
    <td class='text-center'>1</td>";
    $message .= "<td class='text-right'> ".$data[0]['Price'] . "€</td>
</tr>";

}

$message . = "</tbody></table>";

Другие вопросы по теме