我正在尝试处理一个非常简单的租金报价表格,基本上是填写表格,然后将数据发送到电子邮件中。
我的问题是项目部分的格式如何。现在,我正在尝试一个表,并使用foreach循环填充它。主要问题是由于某种原因,它会生成空的td标签。
这是输出,我添加了一些边框,以便您可以看到正在生成的空单元格:
这是我的php代码的部分,我正在其中进行处理(如果您想查看整个代码,请告诉我):
<?php
if(isset($_POST['submit']))
{
$name = strip_tags($_POST['renter_name']);
$email = strip_tags($_POST['renter_email']);
$message = strip_tags($_POST['renter_message']);
$subject = "Quote Request";
$rentalItems = ($_POST['item']);
// $items = implode(',', $_POST['item']);
$msg = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<p><strong>Sent by:</strong> ".$name."</p>";
$msg .= "<p><strong>Items:</strong></p>";
$msg .="<table name='rental_items' style='border-collapse:collapse; border: 1px solid black;';>
<thead style='text-align:left;'>
<tr>
<th sytle='padding-right: 5px;'>Item Name and ID</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>";
foreach($rentalItems as $item) {
$msg .="<tr>
<td style='border: 1px solid black;'>". $item['name'] ."</td>
<td style='border: 1px solid black;'>".$item['quantity']."</td>
</tr>";
}
$msg .= "</tbody>
</table>";
$msg .= "<p><strong>Message:</strong> ".$message."</p>";
$msg .= "</body></html>";
当前,我在循环中运行一行和两个单元格。但是由于某种原因,它会将每个td视为自己的行。
最终,我希望该数量编号与名称和ID信息一起显示。
老实说,我已经多年没有使用表格了,所以可能是我遗失或出错的超级简单的东西。也许这就是我通常如何构造整个事情。
任何建议或帮助将不胜感激。同样,如果您需要更多信息,请告诉我。
这是表单的项目部分:
<input type="checkbox" name="item[][name]" value="Name: <?php the_title();?> <?php echo "<br>"?> ID: <?php echo get_post_meta($post->ID, 'id_number', true); ?>" id="<?php the_title(); ?>"/>
<label for="<?php the_title(); ?>"><img src="<?php the_post_thumbnail_url(); ?>" alt="<?php the_title(); ?>" class="form-image" /></label>
<input type="text" name="item[][quantity]"/>
答案 0 :(得分:1)
在对数据使用item[][name]
和item[][quantity]
时,最终将得到包含不同值的备用数组元素...
Array(0 => ("name" =>"somename"),
1 => ("quantity" =>1))
遍历此数组时,它将显示一个值或另一个值,但不一起显示两个值。
所以(我认为)使用for循环并以2的步长来使用它会更容易。
for($i = 0; $i < count($rentalItems); $i+=2) {
$msg .="<tr>
<td style='border: 1px solid black;'>". $rentalItems[$i]['name'] ."</td>
<td style='border: 1px solid black;'>".$rentalItems[$i+1]['quantity']."</td>
</tr>";
}
或者-将数组重命名为item[name][]
和item[quantity][]
,以便将数据分开,但是您可以使用$item['name'][0]
和$item['quantity'][0]
。