2016-11-28 1 views
2

У меня есть форма, которая отправляет таблицу по электронной почте с помощью нескольких флажков.PHP: инструкция if или foreach внутри двойных кавычек переменной

... 
<ul> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Английская классика" />Английская классика</li> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Итальянская классика" />Итальянская классика</li> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Кантри" />Кантри</li> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Прованс" />Прованс</li> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Деревенская кухня" />Деревенская кухня</li>                  
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Современная классика" />Современная классика</li> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Скандинавский минимализм" />Скандинавский минимализм</li> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Эко-кухня" />Эко-кухня</li> 
    <li><input id="const-style" class="checkbox-form" type="checkbox" name="style[]" value="Старинный Рустикаль" />Старинный Рустикаль</li> 
</ul>              

Но у меня есть проблема с файлом PHP-обработчик, где мне нужно вывести данные из этих флажков.

if(!empty($_POST['name'])) 
{ 
$to = "[email protected]"; 
$from = '[email protected]'; 
$subject = "Form-test"; 
$kit_styles = $_POST['style']; 
$message = " 
      <html> 
      <head> 
      <title></title> 
      </head> 
      <body> 
      <table border='1' width='300px;'> 
       ... 
       <tr> 
        <td>Styles</td> 
        <td> "?><?php foreach ($kit_styles as $stylish) {echo "<span>". $stylish , ", ". "</span>";}" </td> 
       </tr> 
       <tr><td> SOMETHING here </td><td>and here</td></tr> 
       ...     
      </table> 
      </body> 
      </html>"; 
$content = "text/plain";    
$headers = "Content-type: text/html; charset=UTF-8 \r\n"; 
$headers .= "From: <[email protected]>\r\n"; 
$result = mail($to, $subject, $message, $headers); 

if ($result){ 
    echo "<div id='constructResult' class='form-text success inline'>Sent!</div>"; 
} 
else{ 
    echo "<div id='constructResult' class='form-text failed inline'>Didn't send. Try again</div>"; 
} 
} 
else { 
echo "<div id='constructResult' class='form-text failed inline'>A fields with <span style='color:red;'>*</span> are empty.</div>"; 
} 
?> 

Я вижу проверенные позиции на странице формы после отправки. Но в почтовом сообщении я вижу пустую ячейку после Стили и не вижу никаких ячеек после этой ячейки. Поэтому я не вижу проверенных позиций и ячейки с текстом «ЧТО-ТО» здесь и т. Д. Где ошибка?

ответ

2

Вы эхом отдаете результат, а не добавляете его в тело сообщения. Этого должно быть достаточно:

$message = " 
      <html> 
      <head> 
      <title></title> 
      </head> 
      <body> 
      <table border='1' width='300px;'> 
       ... 
       <tr> 
        <td>Styles</td> 
        <td> "; 

        foreach ($kit_styles as $stylish) { 
         $message .= "<span>$stylish, </span>"; 
        } 

$message .= "  </td> 
       </tr> 
       <tr><td> SOMETHING here </td><td>and here</td></tr> 
       ...     
      </table> 
      </body> 
      </html>"; 
+0

Спасибо! Твой способ работал на меня. Я думал, что это проблема с эхом, но я не знал, как этого избежать. – Tesla

1

изменить это ...

echo "<span>". $stylish , ", ". "</span>"; 

к ...

echo "<span>".$stylish.", "."</span>";