2013-02-26 3 views
0

Я пытаюсь повторить для цикла внутри почтового сообщения в формате HTML, петляPHP - Ввод для цикла внутри переменной

for($i=0; $i<$arrlength; $i++) 
{ 
echo $mailroom[$i] ; 
if ($i<($arrlength-1)) 
{ 
echo " &amp; "; 
} 
} 

Он печатает результаты отлично, но не печатает никакого результата на HTML-сообщение, HTML-сообщение

$headers = "From: ". "XXXX" . "<" . $frommail . ">\r\n"; 
$headers .= "Reply-To: " . $frommail . "\r\n"; 
$headers .= "Return-path: ". $frommail; 
$headers .= "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 


$sendmessage = " 
<html> 
<head> 
<title>XXXXXX DETAILS</title> 
</head> 
<body> 
<p>DATA FOR XXXXXXXXXX</p> 
<table border=1> 
<tr> 
<th>Booked on</th> 
<th>Name</th> 
<th>Bank</th> 
<th>UIN</th> 
<th>Phone</th> 
<th>From</th> 
<th>To</th> 
<th>Room No.s</th> 
<th>Tariff</th> 
<th>Caution Money</th> 
<th>Courier</th> 
<th>Bank Charges</th> 
<th>Total Received</th> 
</tr> 
<tr> 
<td>$mailtoday</td> 
<td>$name (ESP)</td> 
<td>&nbsp;</td> 
<td>$uin</td> 
<td>$phone</td> 
<td>$mailfrom</td> 
<td>$mailto</td> 
<td> 
**for($i=0; $i<$arrlength; $i++) 
{ 
echo $mailroom[$i] ; 
if ($i<($arrlength-1)) 
{ 
echo " &amp; "; 
} 
}** 
    </td> 
<td>$room_total</td> 
<td>$c_money</td> 
<td>$courier</td> 
<td>$b_charges</td> 
<td>$totalreceived</td> 
</tr> 
</table> 
</body> 
</html> 
"; 
` 

могу ли я поставить цикл внутри переменной, так что я могу использовать его жгутов HTML-сообщение или иначе позже.

ответ

0

использовать этот код, вы пропустили PHP открытие и закрытие <?php?> тегов

$sendmessage .= ".........<td>"; 
for($i=0; $i<$arrlength; $i++) 
{ 
    $sendmessage .= $mailroom[$i] ; 
    if ($i<($arrlength-1)) 
    { 
     $sendmessage .= " &amp; "; 
    } 
} 
$sendmessage .= "</td>........."; 
+3

это не будет работать внутри строки – bitWorking

+0

ОП хочет добавить строку, а не эхо некоторых вещей в цикле – Veger

+0

@redreggae см отредактированного кода. –

2

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

"<td>$name (ESP)</td> 
<td>&nbsp;</td> 
<td>$uin</td> 
<td>$phone</td> 
<td>$mailfrom</td> 
<td>$mailto</td> 
<td>" . implode(' &amp; ', $mailroom) . "</td> 
<td>$room_total</td> 
<td>$c_money</td>" 
+1

+1 для фактического использования мозга, чтобы сделать код более простым – Kyborek

+0

, но я хочу &, только если в цикле больше данных. Спасибо, в любом случае. –

0

Вы не можете использовать for -loop (или любое другое заявление по этому вопросу) в строке.

Вместо этого вам нужно объединить строку в цикле. Например:

$myString = "test "; 
for($i = 0; $i < 3; $i++) { 
    $myString = $myString . "$i, "; 
} 
$myString = $myString . " end!"; 
echo $myString; // shows "test 1, 2, 3, end!" 

(я создал этот маленький пример, как вы фрагмент кода довольно длинный, но то же самое относится)

0

Нет, Вы не можете это сделать. Двойные кавычки предназначены для замены переменных. Не для запуска кода.

+0

Ну ... есть несколько ответов, показывающих, что вы можете это сделать ... – Veger

+0

Но вопрос в том, сможет ли он это сделать. – Magic

+0

Английский не является родным языком для всех пользователей здесь, поэтому иногда вы не должны брать свой вопрос буквально и немного подумать о том, «что они, вероятно,/действительно хотят?» – Veger

0

Попробуйте

$headers = "From: ". "XXXX" . "<" . $frommail . ">\r\n"; 
$headers .= "Reply-To: " . $frommail . "\r\n"; 
$headers .= "Return-path: ". $frommail; 
$headers .= "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 


$sendmessage = " 
<html> 
<head> 
<title>XXXXXX DETAILS</title> 
</head> 
<body> 
<p>DATA FOR XXXXXXXXXX</p> 
<table border=1> 
<tr> 
<th>Booked on</th> 
<th>Name</th> 
<th>Bank</th> 
<th>UIN</th> 
<th>Phone</th> 
<th>From</th> 
<th>To</th> 
<th>Room No.s</th> 
<th>Tariff</th> 
<th>Caution Money</th> 
<th>Courier</th> 
<th>Bank Charges</th> 
<th>Total Received</th> 
</tr> 
<tr> 
<td>$mailtoday</td> 
<td>$name (ESP)</td> 
<td>&nbsp;</td> 
<td>$uin</td> 
<td>$phone</td> 
<td>$mailfrom</td> 
<td>$mailto</td> 
<td>"; 
for($i=0; $i<$arrlength; $i++) 
{ 
$sendmessage.= $mailroom[$i] ; 
if ($i<($arrlength-1)) 
{ 
$sendmessage .= "&amp; "; 
} 
} 

$sendmessage.=" </td> 
<td>$room_total</td> 
<td>$c_money</td> 
<td>$courier</td> 
<td>$b_charges</td> 
<td>$totalreceived</td> 
</tr> 
</table> 
</body> 
</html>"; 
+0

Работал как шарм. Благодаря тонну. –

Смежные вопросы