1

我是 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>€&lt;?php echo $row['price'] ?></td>
    <?php $subtotaal = ($row['price']*$row['amount']);?>
    <td>€&lt;?php echo "$subtotaal" ;$totaal+= $subtotaal;?></td>
  </tr>

  <?php
  }
  ?>
?>

我希望你们能帮助我并找到解决方案。

EDIT session_user_id 检查用户是否登录。然后它返回登录用户的 id。

4

3 回答 3

2

您缺少与交易表的链接。所以你有一个笛卡尔连接出现。

添加适当的where条件来解决这个问题。

由于您没有提供任何表结构,因此我无能为力!

编辑

在另一个层面上,不要使用 mysql 扩展,因为它已被弃用!

于 2015-02-10T14:13:26.573 回答
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");
于 2015-02-10T14:08:38.830 回答
1

尝试检查行是否唯一。并添加GROUP BY producten.product_id到您的查询中。

于 2015-02-10T18:44:57.770 回答