私は PHP の初心者であり、データベースに非常に慣れていないため、これがばかげた質問である場合はご容赦ください。
「Price_Per_Pound_In_Dollars」列と「Pounds_In_Stock」列を持つテーブルに原材料を追加できるようにする PHP/MySQL の在庫システムを構築しました。現状では、原材料の「在庫数」列の更新は、フォームを使用して一度に 1 つずつ手動で行う必要があります。
製品を作るために必要な手順を含むレシピ用の別のデータベースを追加して、「Pounds_In_Stock」列を一度に複数の未加工品について更新できるようにしたいと考えています。下の画像をご覧ください。
基本的に、誰かがフォームに移動し、ドロップダウン メニューから製品を選択し ( を実行してレシピ名が入力されますmysqli_query
)、作成するガロン数を入力して送信を押します。
レシピ テーブルの行には、その製品を 1 ガロン作るのに必要な数値が含まれているため、テーブル内のすべての数値は、フォームに入力された数値で乗算されます。
したがって、誰かが「レシピ名 1」を選択し、ガロン入力ボックスに「2」と入力したとします。「Pounds_Needed_Per_Gallon」を 2 倍し、その情報を に入れ、mysqli_query
「Raws」テーブルの正しい生の「Pounds_In_Stock」列からそれを削除します。(それが理にかなっている場合)。
今私の質問:
これを動的に行うことは可能ですか? 私はこれに間違った方法でアプローチしていますか? PHPドキュメントの各レシピの値をハードコーディングし、フォームページの「action =」を介してリンクすることで、必要な結果を得ることができることはわかっていますが、これは非常に洗練されていないように思えます。MySQLでこれを行う方法について頭を悩ませているようには見えません。
フォームの問題:
ドロップダウン メニューにテーブル名を含める必要のある最小限のフォームを作成しました (レシピ テーブルを選択できるようにするため)。しかし、ドロップダウンでテーブル名をエコーアウトすることができないようです。データベース内のテーブルの数に対応する 3 つのオプションがドロップダウン メニューにあるため、while ループが正しく機能していることはわかっています。唯一の問題は、それらが空白であることです。以下の画像とコードを参照してください。コードを何度か見直しましたが、どこで間違いを犯したのかわかりません。何か案は?
<?php
//Prepare MySQL Query.
$Product_Menu_Query ="SHOW TABLES";
$Run_Product_Menu_Query = mysqli_query($Connect, $Product_Menu_Query);
?>
<form action="submit.php" method="POST">
<span>Recipe Name:</span><br>
<select name="recipe">
<?php //Populates dropdown with Product_Name from database.
while ($row = mysqli_fetch_array($Run_Product_Menu_Query)) {
echo '<option value="' . $row[0] . '">' . '</option>';
}
?>
</select><br><br>
<span>Gallons:</span><br>
<input type="number" name="gallons"><br><br>
<input type="submit" value="Submit">
</form>
フォームのスクリーンショット: