php - 一次将两个表中的信息读取为两种形式

标签 php mysql sql database database-design

对于我的第一次编程尝试,我正在使用 php 和 MySQL 制作一个简单的 Web 应用程序,用于输入客户信息并存储有关订单的信息。

到目前为止,我已经制作了一个用于输入客户信息的表单、一个用于编辑该信息的页面以及另一个用于显示不同客户的页面,这一切都工作正常。

然而,在尝试实现下一阶段时,我遇到了麻烦。

我有一个包含 3 列的 editcustomers 页面。

  • 第 1 列显示包含客户信息的表单,使其能够 进行编辑。
  • 第 2 列允许订购产品并显示订购了多少产品
  • 第 3 列显示迄今为止已支付的总额以及欠款总额。

我目前拥有的页面代码:

<html>
<?php
$id = $_GET['id'];
require_once('connect.php');
$sth = $dbh->query("SELECT * FROM customers where id = '$id'");
$sth->setFetchMode(PDO::FETCH_ASSOC);
?>

<div id="main">
    <div id="left">
    <form name="myForm" action ="process.php" method ="post" >
    <?php while($row = $sth->fetch()){ ?>
    <p><input type = "hidden" name ="id" value="<?php echo $row["id"] ?>"/>
    <p><input type = "text" name ="firstName" size ="30" value=" <?php echo $row["firstName"]?>"/>
    <p><input type = "text" name ="lastName" size ="30" value="<?php echo $row["lastName"]?>"/>
    <p></p>
    <input type="submit" value="Update" />
    <?php }?>
    </div>

    <div id="mid">
    <p>Amount owed<br />
    <input type = "text" name ="moneyOwed" size ="30" /></p>
    <input type="submit" value="Pay" /> 
    <p>Number of aaaa<br />
    <input type = "text" name ="numAaa" size ="30" /></p>
    <p>Number of bbbb<br />
    <input type = "text" name ="numBbb" size ="30" /></p>
    <p>
    <input type="submit" value="Update" />
    </div>

    <div id="right">
    <b>Total Balance</b>
    <p> Money owed: </p>
        <p> aaa total: </p>
    <p> bbb total: </p>
    <p> Total: </p>
    <input type = "text" name ="pay" size ="20" /></p>
    <input type="submit" value="Make Payment" />
    </div>
<?php
$dbh =null;
?>
</body>
</html>

我有以下数据库结构:

  • 客户表,包含名字、姓氏等基本信息以及 ID 字段。
  • 产品表,列出了不同的产品,只有 1 行包含每种产品的成本。
  • 采购表,带有 id 字段、numProductA、numProductB 等字段,显示订购的每种产品的数量

我遇到的问题是,在我的 editcustomerspage 中,我有一个数据库查询,用于从客户表中读取信息,以填写第一列中表单中的字段,还有一个单独的查询来更新它,如果选择的功能。

更新第二个表单应该没问题,因为我可以使用隐藏字段来区分表单,但是我不确定如何从“客户”表和“购买”表中读取信息,以便我可以填充第二个表单中的字段表格..

问题的一部分是,如果给定客户尚未下订单,则采购表可能为空。

我正在考虑删除购买表,并将字段附加到用户表上,这将解决我的问题,尽管我认为这通常被认为是不好的做法?

产品将在应用程序中固定,并且不会更改。即便如此,将列名称 cost 和 name 以及每个产品作为记录是否会更好?

我可以采取哪些方法来解决这个问题?

最佳答案

由于列 numProductA、numProductB,即使您当前正在做的事情也被认为是不好的做法。当您有 1000 种产品并且用户从所有产品中订购不同数量的产品时,会发生什么情况?仅当产品列表是固定的(即编码到应用程序中)并且需要大量编码时,此功能才有效。

您可能想要创建一个 buy_item 表,其中包含以下字段:id、purchase_id、product_id、num_product。它就像标准账单上的一行:purchase_id 标识该行属于哪个账单; Product_id 将显示该行所涉及的产品,num_product 将显示该行上的金额(乘数)。

通过这种方式,当新产品添加到数据库时,您不需要更改代码。

关于php - 一次将两个表中的信息读取为两种形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554920/

相关文章:

mysql - SUM 的 SQL 聚合查询,但只允许正和(否则为 0)

mysql - SQL Join 查询连接 2 个表以获得所需的输出

python - 从具有最小值总和的不同表中选择唯一记录

sql - postgresql查询记录自22日:00 yesterday

php - Laravel - 无法使 PHP-Vars-To-Js-Transformer 包工作

php - Symfony 表单选择禁用翻译器

sql - TRY...CATCH 似乎不起作用

mysql - 从一个表中选择值并将其添加到另一表,同时具有相同的 PK

php - 如何为 symfony Controller 编写 php 单元测试用例

php - 如何在SQLite中重复结果行?