对于我的第一次编程尝试,我正在使用 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/