2013-11-26 24 views
0

我有數據庫中的產品列表。我正在加載頁面加載產品,然後顯示。我會要求用戶輸入每種產品的數量。現在提交表單後,我想檢索每個產品的所有數量。以下是我目前的代碼。多個文本框附加到當前對象數組在php中

<?php 
$productList; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    echo 'Product form submitted'; 
    foreach ($productList as $product) { 
     // Code to retrieve quantity 
    } 
} else { 
    include_once '../classes/OrderService.php'; 
    $orderService = new OrderService(); 
    $productList = $orderService->loadProducts(); 
} 

?>

下面是HTML的一部分。

<?php foreach ($productList as $product) { ?> 


     <b><a href="#" onclick="displayProductDetails('<?php echo $product->getProductName(); ?>');"> 
     <?php echo $product->getProductName();?></a></b> 
     <br/> 
     <?php echo $product->getDescription();?> 
     <br/> 
     <b>Price:</b> &nbsp;&nbsp;&nbsp;<?php echo $product->getPrice(); ?> 
     <br/><br/> 
     Qantity: <input type="text" style="padding-left: 5px;" name="<?php echo $product->getQuantity(); ?>" size="3" maxlength="3"/> 

<?php } ?> 

我在這裏有兩個問題。首先是當我提交表格和控制去提交,如果阻止我的產品清單是空的。爲什麼如果我在加載頁面時已經填充了它爲空。還有如何獲得用戶輸入的每個產品的數量。

在此先感謝。

回答

2

第一次建立頁面後的後續請求,即提交每個產品的數量,將不會自動在發佈到同一腳本的表單上提供相同的數據。

因此,您需要對包含產品的數據庫表執行更新查詢,然後再次選擇它們。 (大概是使用你已經建立了OrderService對象

這裏有一點幫助 - 儘管我沒有一大堆有關您的數據存儲:如果任何

include_once '../classes/OrderService.php'; 
$orderService = new OrderService(); 
$productList = $orderService->loadProducts(); 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    foreach($productList as $product) { 
     if(isset($_POST["quantity_" . $product->getId()])) { 
      $product->updateQuantity($_POST["quantity_" . $product->getId()); 
     } 
    } 
} 

道歉上面會產生一個錯誤,只需快速輸入即可

快速提示:在您的輸入標籤上,我會爲某個名稱使用更具描述性的名稱,例如產品ID或數量,以便您可以區分如果您需要一次更新多個產品數量,那麼在服務器上的提交之間也是如此好的做法是給這些領域一個具有相同價值的ID。

它是您的「價值」屬性,它希望顯示用戶訂單中的實際產品數量。例如

<input type="text" style="padding-left: 5px;" name="<?php echo $product->getId(); ?>" id="<?php echo $product->getId(); ?>" size="3" maxlength="3" value="<?php echo $product->getQuantity(); ?>"/> 
+0

我瞭解了關於輸入標籤的第二部分。關於第一部分,你想說我需要再次加載產品,然後找到數量大於0的產品? – javafan

+0

由於網絡的無狀態性質,每個請求到服務器都是獨立的。所以,即使您加載數據以顯示初始表單。下一個請求是一個新的請求,不知道第一個是什麼。 您需要更新數據庫中的產品(假定您有數據庫)或其他存儲方式。然後,一旦你更新了它們,再次選擇它們來重建你的頁面。 – think1712

+0

我明白了。非常感謝。 – javafan