我有三个表来自上一个文件的上传数据。我想在定义的位置插入数据,以便每个服务都是表中的单独记录,并分配了单独的数量和金额。 我的php功能:
function listService()
{
$service_chcecked = $_POST['service_chcecked'];
$quantity = $_POST['quantity_chcecked'];
$net_price = $_POST['net_price_chcecked'];
for ($x = 0; $x < count($service_chcecked); ++$x) {
echo '<tr><td>id:' . $x . '</td><td>name:' . $service_chcecked[$x] . '</td>';
for ($y = 0; $y < count($net_price); ++$y) {
echo '<td>price:' . $net_price[$y] . '</td>';
for ($z = 0; $z < count($quantity); ++$z) {
echo '<td>quantity:' . $quantity[$z] . '</td>';
};
};
echo '</tr>';
}
}
我的html地点:
<div class='services'>
<table>
<tr>
<th><span>NO.</span></th>
<th><span>Service name</span></th>
<th><span>Net price</span></th>
<th><span>Quantity</span></th>
</tr>
<?php listServiceName(); ?>
</table>
</div>
现在它以这种方式显示给我,最后重复数据:/ broken table
答案 0 :(得分:0)
那是因为你正在嵌套你的for循环。您可以创建<tr>
和&#34; id&#34;和&#34;名称&#34; <td>
中每个项目的service_chcecked
。然后你创建一个&#34;价格&#34;每个<td>
* service_chcecked
net_price_chcecked
。而你的第三个嵌套循环创建了一个&#34;数量&#34;每个service_chcecked
* net_price_chcecked
* quantity_chcecked
的列。这就是为什么你最终得到那个破桌子的原因。这取决于你如何收到POST数据,但如果你的三个数组总是有相同的长度,你可以在一个循环中完成所有这些:
function listService()
{
$service_chcecked = $_POST['service_chcecked'];
$quantity = $_POST['quantity_chcecked'];
$net_price = $_POST['net_price_chcecked'];
for ($x = 0; $x < count($service_chcecked); ++$x) {
echo '<tr><td>id:' . $x . '</td><td>name:' . $service_chcecked[$x] . '</td>';
echo '<td>price:' . $net_price[$x] . '</td>';
echo '<td>quantity:' . $quantity[$x] . '</td>';
echo '</tr>';
}
}
答案 1 :(得分:0)
很难理解发生了什么,但是更少,并且尽量不要混合你的数据和你的函数里面的html会让你后来迷惑。
<?php
$services = $_POST['service_checked'];
$qtys = $_POST['quantity_checked'];
$prices = $_POST['net_price_checked'];
?>
<div class='services'>
<table>
<tr>
<th>NO.</th>
<th>Service name</th>
<th>Net price</th>
<th>Quantity</th>
</tr>
<? foreach($services as $k=>$service){?>
<tr>
<td><?=$k?></td>
<td><?=$service?></td>
<td><?=$qtys[$k]?></td>
<td><?=$prices[$k]?></td>
</tr>
<? }?>
</table>
</div>