我是php的新手,但我已经为我的网店提出了一些疑问。
制作发票我现在有点问题。
我尝试将数据库中的发票数据放在我网站的表格中,但它会复制自己。
Product_id | Product name | amount | price | subtotal|
2 kippensoep 1 €3 €3
2 kippensoep 1 €3 €3
2 kippensoep 1 €3 €3
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
正如您所看到的,product_id
,product_names
是重复的。
这很奇怪,因为在数据库中它并不重复。
这是PHP代码。
<?php
$maxfac1 = mysql_fetch_array(mysql_query("SELECT MAX(transactie.factuur_id) FROM transactie , account WHERE transactie.id = $session_user_id"));
unset ($maxfac1[0]);
$maxfactuur_id = implode (" ",$maxfac1);
$productinfo = mysql_query("SELECT * FROM producten, transactie, factuur WHERE producten.product_id = factuur.product_id AND factuur.factuur_id = $maxfactuur_id AND factuur.gebruikers_id= $session_user_id");
$totaal=0;
$subtotaal=0;
while ($row = mysql_fetch_array($productinfo))
{
?>
<tr>
<td><?php echo $row['product_id']?></td>
<td><?php echo $row['name'] ?></td>
<td><?php echo $row['amount'] ?></td>
<td>€<?php echo $row['price'] ?></td>
<?php $subtotaal = ($row['price']*$row['amount']);?>
<td>€<?php echo "$subtotaal" ;$totaal+= $subtotaal;?></td>
</tr>
<?php
}
?>
?>
我希望你们能帮助我并找到解决方案。
EDIT session_user_id检查用户是否已登录。然后它返回登录用户的id。
答案 0 :(得分:2)
您缺少与 transactie 表的链接。所以你出现了Cartesian join。
添加正确的 where 条件来修复它。
由于你没有提供任何桌面结构,我无法帮助你!
在另一个层面上,不要使用mysql扩展,因为它已被弃用!
答案 1 :(得分:1)
尝试添加DISTINCT关键字。
$productinfo = mysql_query("SELECT DISTINCT * FROM producten, transactie, factuur WHERE producten.product_id = factuur.product_id AND factuur.factuur_id = $maxfactuur_id AND factuur.gebruikers_id= $session_user_id");
答案 2 :(得分:0)
尝试检查行是否唯一。并在查询中添加GROUP BY producten.product_id
。