2012-09-10 57 views
2

首先,我很新的PHP(和一般的編程),我想通過自己開發一個遊戲網站與使用PHP和一些自定義工具瞭解它在我的業餘時間MySQL的。所以請在閱讀時記住這一點。PHP後過濾與數學

我需要的是一個正確的方向(或什麼是什麼)的一個點,以瞭解如何正確編寫一個函數在表單上對數據進行一些數學運算用戶。

這裏的背景資料:

在我的可轉換成數量不等的8種不同的「產品」,「原料」一表的數據庫。那麼有另外一張桌子有這8種產品及其價格。

我有一個形式設立,其自動對原項目名稱的簡單查詢生成我的選擇框(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> 

旁邊的選擇框是這個文本輸入人們可以用它來輸入每個選定「原材料」的編號。名稱= productNum1直通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 

所以這就是所有的數據。我現在需要做的是取出選擇框後,並獲取適當的陣列數據和產品編號,如果它們大於0.

一旦它具有這些並且它們被正確存儲,數學需要發生用戶提交了「productNum1」值。

例如:

處理之後,Rawmaterial1具有產品1的500和產品6的250,其餘的0。 Rawmaterial1擁有一批100 用戶中選擇Rawmaterial1 用戶對Rawmaterial1

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 

的#進入1000這是我在哪裏丟失了 - 我的代碼通過對字符串的負荷分配後值分別做數學題&變量與以前一樣,但我很積極,因爲缺乏理解,我缺少一種更簡單的方法。

謝謝你給任何人事先閱讀我的乞求幫助新穎這裏。

+0

是最後一部分的PHP? – JvdBerg

+0

不 - 我只是將它分開以便更容易閱讀數學過程 – jwajernigan

回答

0

我認爲你正在做的事情是這樣的:

  1. 從數據庫
  2. 獲取所有數據
  3. 分配到陣列
  4. 獲取$ _ POST數據對獲取陣列
  5. 匹配$ _ POST數據

採用$ _POST信息並使用此信息查詢數據庫更爲標準(確保您過濾呃數據在查詢中運行之前,以防止注入)。

因此,如果用戶表示他出售50單位的產品1和20單位的產品2,則這些數字可用於數據庫查詢,因此您只能返回實際需要的數據。

這意味着您不需要在代碼中進行匹配或數學運算;如果我正確理解你的問題,它應該在SQL中完成。

如果我沒有正確理解您的問題,請隨時發表評論。

+0

您是正確的,那就是問題所在。感謝您的反饋。我會嘗試一下你所建議的方法,看看事情是如何發生的,甚至沒有想過用post數據運行查詢。 – jwajernigan

+0

很高興我能幫忙:) – MazB