我需要帮助才能在表格中显示我的数组结果,同时使用每行上product_ID的Mysql表中的数据填充Description列。描述现在显示每个product_ID的相同产品描述。它不是callind基于product_ID的描述。
<?php
foreach($_SESSION["cart_array"]as $item){
$i++;
$item_id=$item['part_id'];
$sql = mysqli_query($con,"SELECT * FROM product_description
WHERE product_id='$item_id' LIMIT 1");
While($row=mysqli_fetch_array($sql)){
$product_name=$row["name"];
}
}
?>
<table style="margin-left:50px; text-align:left;">
<tr>
<th style="width:20%; border-bottom:solid 1px #000;">Item ID</th>
<th style="width:40%; border-bottom:solid 1px #000">Description</th>
<th style="width:15%; border-bottom:solid 1px #000">Quantity</th>
<th style="width:20%; border-bottom:solid 1px #000">Unit Price</th>
</tr>
<?php foreach($_SESSION["cart_array"]as $item): ?>
<tr>
<td><?php echo $item['part_id'] ?></td>
<td><?php echo $product_name ?></td>
<td><?php echo $item['quantity'] ?></td>
<td><?php echo $item['price'] ?></td>
</tr>
<?php endforeach; ?>
</table>
答案 0 :(得分:1)
问题是您的变量$ product_name包含上一个项目中产品的名称。
如果您将代码格式化得更好,可能会清楚地知道每个循环都会设置名称。
foreach($_SESSION["cart_array"]as $item){
$i++;
$item_id=$item['part_id'];
$sql = mysqli_query($con,"SELECT * FROM product_description WHERE product_id='$item_id' LIMIT 1");
While($row=mysqli_fetch_array($sql)){
$product_name=$row["name"];
}
}
当您看到每个for循环时,您将设置$ product_name,然后通过回显它继续。
有几种方法可以解决这个问题。
1)如果你想继续做2个循环我会让$ product_name成为一个数组并指定名称如$ product_names [$ item_id] = $ row [“name”];
然后回声如
2)在第二个循环中执行查询,如
<table style="margin-left:50px; text-align:left;">
<tr>
<th style="width:20%; border-bottom:solid 1px #000;">Item ID</th>
<th style="width:40%; border-bottom:solid 1px #000">Description</th>
<th style="width:15%; border-bottom:solid 1px #000">Quantity</th>
<th style="width:20%; border-bottom:solid 1px #000">Unit Price</th>
</tr>
<?php
foreach($_SESSION["cart_array"]as $item):
$item_id=$item['part_id'];
$sql = mysqli_query($con,"SELECT * FROM product_description
WHERE product_id='$item_id' LIMIT 1");
While($row=mysqli_fetch_array($sql)){
$product_name=$row["name"];
}
?>
<tr>
<td><?php echo $item['part_id'] ?></td>
<td><?php echo $product_name ?></td>
<td><?php echo $item['quantity'] ?></td>
<td><?php echo $item['price'] ?></td>
</tr>
<?php endforeach; ?>
</table>
顺便说一下$ i ++似乎没有做任何事情所以无论你选择什么解决方案我都会将其删除
答案 1 :(得分:0)
你可能想要这个:
While($row=mysqli_fetch_array($sql)){
$product_name[$row['part_id']] = $row["name"];
}
<td><?php echo $product_name[$item['part_id']] ?></td>
这样您就可以构建产品名称的ARRAY。因此,你的循环会获取所有名称,但会删除以前检索到的名称。