2

まず、私は PHP (および一般的なプログラミング) に非常に慣れていないため、php と mysql を使用するカスタム ツールを使用してゲーム サイトを開発することで、空き時間にそれを自己学習しようとしています。そのため、読み進める際にはそのことを念頭に置いてください。

私が必要としているのは、データがユーザーによって POST に送信されたら、フォーム上で何らかの計算を行う関数を適切にコーディングする方法を学ぶための正しい方向へのポイント (または何が何をするかについての簡単な説明) です。

背景情報は次のとおりです。

データベースには、さまざまな量の 8 つの異なる「製品」に変換できる「原材料」の表があります。次に、それらの 8 つの製品とその価格を含む別のテーブルがあります。

Raw Item Names に対する単純なクエリから、この形式で Select ボックス (SelectList1 から 11) を自動的に生成するフォームをセットアップしました。

<td>
<div align="center">
    <select name="SelectList1">
       <option value=0></option>
       <option value=1>Raw Item 1</option>
       <option value=2>Raw Item 2</option>
       ...
       <option value=47>Raw Item 47</option> //Yes, there is a lot
</div>
</td>

選択ボックスの隣には、選択した各「原材料」の数を入力するために使用できるテキスト入力ボックスがあります。name=商品番号1~11

<td>
    <input type="text" size="15" maxlength="10" name="productNum1" id="productNum1">
</td>

これでユーザー フォームは終了です。未加工のアイテムを選択し、販売する数量を入力します。

送信すると、データベースにアクセスして、製品価格テーブルと「原材料」テーブルの両方の必要な配列と、そのすべてのさまざまなデータを取得する別の長いコードがあります。

フェッチされた価格配列のレイアウト:

$pDA = Array (
    [product1] => Array (
        [id] => 1
        [productname] => Product1
        [price] => 599 //whole number used to avoid float precision issues
        )
    .....
    [product8] => Array ( //repeat above values

取得した原材料配列:

$oDA = Array (
    [material1] => Array (
        [id] => 1
        [materialname] => Material1
        [batch] => 100 //Number needed to process
        [product1] => 0 //changes based on material
        [product2] => 0 //changes based on material
        [product3] => 0 //changes based on material
        [product4] => 0 //changes based on material
        [product5] => 0 //changes based on material
        [product6] => 0 //changes based on material
        [product7] => 0 //changes based on material
        [product8] => 0 //changes based on material
        )
    ..... continue all the way down to 
    [material47] => Array ... etc

というわけでデータは以上です。私が今しなければならないことは、Select box ポストを利用して、適切な配列データと製品番号が 0 より大きい場合はそれらを取得することです。

それらがあり、それらが正しく保存されたら、ユーザーが送信した「productNum1」値に対して計算を行う必要があります。

例えば:

処理後、Rawmaterial1 には product1 が 500 個、product6 が 250 個、残りが 0 個あります。Rawmaterial1 には 100 のバッチがあります ユーザーは Rawmaterial1 を選択します ユーザーは Rawmaterial1 の数として 1000 を入力します

Fetch Array Data against Select Box
Array returns data for Rawmaterial1
    (1000 submitted / 100 Batch) = 10 runs
        10 runs = 5000 of product1
        10 runs = 2500 of product6
            5000 * product1price = value1
            2500 * product2price = value2
$totalvalue = $value1 + $value2

これは私が迷っているところです - 以前と同じようにポスト値を文字列と変数の負荷に割り当てることで個別に数学を行うようにコード化できますが、理解不足で見逃している簡単な方法があると確信しています.

ここで私の Beg for Help 小説を読んでくれた人に、事前に感謝します.

4

1 に答える 1

0

私はあなたがこのようなことをしていると思います:

  1. データベースからすべてのデータを取得する
  2. 配列への代入
  3. $_POST データを取得する
  4. フェッチされた配列に対して $_POST データを照合します

$_POST 情報を取得し、この情報を使用してデータベースにクエリを実行する方がより標準的です (インジェクションを防ぐために、クエリでデータを実行する前にデータをフィルター処理するようにしてください)。

したがって、ユーザーが製品 1 を 50 単位、製品 2 を 20 単位販売していると言った場合、これらの数値をデータベース クエリで使用できるため、実際に必要なデータのみを返すことができます。

これは、コード内でマッチングや計算を行う必要がないことを意味します。あなたの問題を正しく理解していれば、SQLで実際に行う必要があります。

あなたの問題を正しく理解していない場合は、お気軽にコメントしてください。

于 2012-09-10T21:02:18.627 に答える