邮件中$message的PHP条件语句


PHP conditionals for $message in mail

我知道有一种更简单的方法可以做到这一点。我想做的是按数字对字段进行分组,并使用isset测试$_POST['item#']值是否为空。如果项目#不为空,我想发送相应的颜色、数量和价格。如果有多个项目提交,我想发送多个。

以下是我的帖子变量:

$item1 = $_POST['item1'];
$color1 = $_POST['color1'];
$quantity1 = $_POST['quantity1'];
$price1 = $_POST['price1'];
$item2 = $_POST['item2'];
$color2 = $_POST['color2'];
$quantity2 = $_POST['quantity2'];
$price2 = $_POST['price2'];
$item3 = $_POST['item3'];
$color3 = $_POST['color3'];
$quantity3 = $_POST['quantity3'];
$price3 = $_POST['price3'];
$item4 = $_POST['item4'];
$color4 = $_POST['color4'];
$quantity4 = $_POST['quantity4'];
$price4 = $_POST['price4'];
$item5 = $_POST['item5'];
$color5 = $_POST['color5'];
$quantity5 = $_POST['quantity5'];
$price5 = $_POST['price5'];
$item6 = $_POST['item6'];
$color6 = $_POST['color6'];
$quantity6 = $_POST['quantity6'];
$price6 = $_POST['price6'];
$item7 = $_POST['item7'];
$color7 = $_POST['color7'];
$quantity7 = $_POST['quantity7'];
$price7 = $_POST['price7'];
$item8 = $_POST['item8'];
$color8 = $_POST['color8'];
$quantity8 = $_POST['quantity8'];
$price8 = $_POST['price8'];

I'm using isset to test if $_POST[] values are empty:
if( isset($_POST['item1']) )
{
    $message = 'Item: '.$item1." 'nColor: ".$color1." 'nQuantity: ".$quantity1." 'nPrice: ".$price1;
}
if( isset($_POST['item2']) )
{
    $message = 'Item: '.$item2." 'nColor: ".$color2." 'nQuantity: ".$quantity2." 'nPrice: ".$price2;
}
if( isset($_POST['item3']) )
{
    $message = 'Item: '.$item3." 'nColor: ".$color3." 'nQuantity: ".$quantity3." 'nPrice: ".$price3;
}
if( isset($_POST['item4']) )
{
    $message = 'Item: '.$item4." 'nColor: ".$color4." 'nQuantity: ".$quantity4." 'nPrice: ".$price4;
}
if( isset($_POST['item5']) )
{
    $message = 'Item: '.$item5." 'nColor: ".$color5." 'nQuantity: ".$quantity5." 'nPrice: ".$price5;
}
if( isset($_POST['item6']) )
{
    $message = 'Item: '.$item6." 'nColor: ".$color6." 'nQuantity: ".$quantity6." 'nPrice: ".$price6;
}
if( isset($_POST['item7']) )
{
    $message = 'Item: '.$item7." 'nColor: ".$color6." 'nQuantity: ".$quantity7." 'nPrice: ".$price7;
}
if( isset($_POST['item7']) )
{
    $message = 'Item: '.$item8." 'nColor: ".$color7." 'nQuantity: ".$quantity8." 'nPrice: ".$price8;
}
$items = $_POST['item'];
for ($i = 0; $i < count($items); $i++) {
    if ($items[$i])){  //not necessarily the best way to check if it has a value
        //do what you want with $items[$i], $color[$i], $quantity[$i], and $price[$]
    }
}

对于您的HTML表单输入,请使用:

<input type="text" name="item[]" />

这是请求的HTML。我只是在学习,所以我相信有一种更有效的方法来命名输入。我正在尝试将商品颜色、数量和价格分组,以便在通过电子邮件发送表格时,每个商品的相关数据都在一个段落或表格中。

<td align="center"><p><span>Item Name</span><br><input id="item1" type="text" name="item1"></p></td>
<td align="center"><p><span>Color</span><br><input id="color1" type="text" name="color1"></td>
<td align="center"><p><span>Quantity</span><br><input id="quantity1" type="text" name="quantity1"></td>
<td align="center"><p><span>Wholesale Price</span><br><input id="price1" type="text" name="price1"></td>
</tr>
<tr>
<td align="center"><p><input id="item2"  type="text" name="item2"></p></td>
<td align="center"><p><input id="color2" type="text" name="color2"></p></td>
<td align="center"><p><input  id="quantity2" type="text" name="quantity2"></p></td>
<td align="center"><p><input id="price2" type="text" name="price2"></p></td>
</tr>
<tr>
<td align="center"><p><input id="item3" type="text" name="item3"></p></td>
<td align="center"><p><input id="color3" type="text" name="color3"></p></td>
<td align="center"><p><input id="quantity3" type="text" name="quantity3"></p></td>
<td align="center"><p><input id="price3" type="text" name="price3"></p></td>
</tr>
<tr>
<td align="center"><p><input id="item4" type="text" name="item4"></p></td>
<td align="center"><p><input id="color4" type="text" name="color4"></p></td>
<td align="center"><p><input id="quantity4" type="text" name="quantity4"></p></td>
<td align="center"><p><input id="price4" type="text" name="price4"></p></td>
</tr>
<tr>
<td align="center"><p><input id="item5" type="text" name="item5"></p></td>
<td align="center"><p><input id="color5" type="text" name="color5"></p></td>
<td align="center"><p><input id="quantity5" type="text" name="quantity5"></p></td>
<td align="center"><p><input id="price5" type="text" name="price5"></p></td>
</tr>
<tr>
<td align="center"><p><input id="item6" type="text" name="item6"></p></td>
<td align="center"><p><input id="color6" type="text" name="color6"></p></td>
<td align="center"><p><input id="quantity6" type="text" name="quantity6"></p></td>
<td align="center"><p><input id="price6" type="text" name="price6"></p></td>
</tr>
<tr>
<td align="center"><p><input id="item7" type="text" name="item7"></p></td>
<td align="center"><input id="color7" type="text" name="color7"></p></td>
<td align="center"><input id="quantity7" type="text" name="quantity7"></p></td>
<td align="center"><p><input id="price7" type="text" name="price7"></p></td>
</tr>
<tr>
<td align="center"><p><input id="item8" type="text" name="item8"></p></td>
<td align="center"><p><input id="color8" type="text" name="color8"></p></td>
<td align="center"><p><input id="quantity8" type="text" name="quantity8"></p></td>
<td align="center"><p><input id="price8"type="text" name="price8"></p></td>
</tr>
<tr>
<td align="center"><p><input id="item9" type="text" name="item9"></p></td>
<td align="center"><p><input id="color9"  type="text" name="color9"></p></td>
<td align="center"><p><input id="quantity9" type="text" name="quantity9"></p></td>
<td align="center"><p><input id="price9" type="text" name="price9"></p></td>
</tr>

我将所有输入名称转换为数组,并有工作循环。然而,我需要格式化foreach以生成一个带有表的HTML电子邮件。它在回显数据时工作得很好,但一旦我将其格式化为$message发送,它只发送最后一个$item。

以下是完美工作的foreach循环:

foreach ( $_POST['item'] as $items) {
    {
       echo '<table>';
        echo '<tr>';
        echo '  <td>', $items['name'], '</td>';
        echo '  <td>', $items['color'], '</td>';
        echo '  <td>', $items['size'], '</td>';
        echo '  <td>', $items['quantity'], '</td>';
        echo '  <td>', $items['price'], '</td>';
        echo '</tr>';
    }
    echo '</table>';
}

使用PHP邮件功能的HTMl电子邮件:

foreach($_POST['item']作为$items){

$message = "
   <html>
   <body>
   <table>
   <tr>
    <th>Name</th>
    <th>Color</th>
    <th>Size</th>
    <th>Quantity</th>
    <th>Price</th>
    </tr>
    <tr>
      <td>" . $items['name'] . "</td>
      <td>" . $items['color'] . "</td>
      <td>" . $items['size'] . "</td>
      <td>" . $items['quantity'] . "</td>
      <td>" . $items['price'] . "</td>
    </tr>
    </table>
    </body>
    </html>
    ";
}