2016-07-05 80 views
1

我有一個包含產品名稱及其相應數量的表。將mysql結果放在一個數組中

Product  Quantity  Delete 
    A    10   Del 
    B    5   Del 

我想要做的就是把它們放在一個數組中,並帶有相應的產品ID。我可以獲得第二個產品的產品ID,但我無法獲得第一個產品的ID。我該如何解決它?

這裏的輸入表格向PHP代碼:

<table> 
    <tr> 
     <td><input id="product1" type="text" value="A" name="product1"></td> 
     <td><input id="quantity1" type="text" value="10" name="quantity1> 
      <input type='hidden' name='htmlrow[]' value='1'> </td> //row number 
    </tr> 
    <tr> 
     <td><input id="product2" type="text" value="B" name="product2"></td> 
     <td><input id="quantity2" type="text" value="5" name="quantity2"> 
      <input type='hidden' name='htmlrow[]' value='2'></td>//row number 
    </tr> 
</table> 

PHP代碼:

$numberOfRows = $_POST["htmlrow"]; 
$r = end($numberOfRows); 
for($i=1; $i<$r+1; $i++){ //r = number of rows 
    $results = $wpdb->get_results("SELECT * FROM wp_products WHERE productName = '".$_POST["product".$i]."'");  

     foreach($results as $product){ 
       $pID = $product->productID; 
     } //I can only get the last product ID 

     $orderItem = array(
         'product' => $_POST["product".$i], 
         'productID' => $pID, 
         'quantity' => $_POST["quantity".$i] 
        ); 

     $order[] = $orderItem; 
    } 
+0

請解釋一下'$ r''$ I <$ R + 1' – PaulH

+0

什麼是你向我們展示了'html'代碼的目的是什麼? – PaulH

+0

什麼是html代碼,它是輸入還是輸出?在執行php之前還是之後?執行php之前的 – PaulH

回答

0

A排列從0不開始從1如果將值1分配給$ i中的環將從行中的第二個元素開始。播種解決方案是這樣的。

for($i=0; $i<$r+1; $i++){ //r = number of rows 
    $results = $wpdb->get_results("SELECT * FROM wp_products WHERE productName = '".$_POST["product".$i]."'");  

     foreach($results as $product){ 
       $pID = $product->productID; 
     } //I can only get the last product ID 

     $orderItem = array(
         'product' => $_POST["product".$i], 
         'productID' => $pID, 
         'quantity' => $_POST["quantity".$i] 
        ); 

     $order[] = $orderItem; 
    } 

這是一個例子。比方說,我們有一個數組$測試

$test = array("A","B","C","D"); 

從陣列的第一個元素是「A」,和「A」是在位置0「B」是在位置1等。

在你的foreach循環中你有$ pID var保存你的產品「ID」,所以$ pID總是會有$結果中的最後一個元素。你必須把$ orderItem數組放到你的foreach循環中。

foreach($results as $product){ 
     $pID = $product->productID; 
     $orderItem = array(
         'product' => $_POST["product".$i], 
         'productID' => $pID, 
         'quantity' => $_POST["quantity".$i] 
     ); 
     $order[] = $orderItem; 
} 

或者你可以嘗試在此

$results[$i] = $wpdb->get_results("SELECT * FROM wp_products WHERE productName = '".$_POST["product".$i]."'", ARRAY_A); 

print_r($results); 
+0

我輸入的id是product1,product2。這就是爲什麼我從1開始。即使我從0開始,我仍然沒有獲得第一個產品ID。 – user3383911

+0

你能在你的代碼中顯示$ r嗎? –

+0

DB中的產品名稱與「product1」,「product2」或「productA」,「productB」或簡稱「A」,「B」類似? –

相關問題