プログラミングの最初の試みとして、顧客情報を入力し、注文に関する情報を保存するために、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 に、customers テーブルから情報を読み取って最初の列のフォームのフィールドに入力するデータベース クエリと、関数が選択された場合にそれを更新する別のクエリがあることです。
非表示フィールドを使用してフォームを区別できるため、2 番目のフォームを更新しても問題ありませんが、2 番目のフォームにフィールドを入力できるように、Customers テーブルと Purchases テーブルから情報を読み取る方法がわかりません。
問題の一部は、特定の顧客がまだ注文していない場合、その顧客の purchases テーブルが空になる可能性があることです。
購入テーブルを取り除き、フィールドを users テーブルに追加して問題を解決することを検討していましたが、それは一般的に悪い習慣と考えられていますか?
製品はアプリケーション内で固定され、変更されることはありません。それでも列名はコストと名前と各製品をレコードとして持った方が良いでしょうか?
この問題を解決するために私が取ることができるいくつかのアプローチは何ですか?