我有数据库中的产品列表。我在页面加载时加载产品然后显示。我会要求用户输入每种产品的数量。现在提交表单后,我想针对每个产品检索所有这些数量。以下是我目前的代码。
<?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();
}
&GT;
下面是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> <?php echo $product->getPrice(); ?>
<br/><br/>
Qantity: <input type="text" style="padding-left: 5px;" name="<?php echo $product->getQuantity(); ?>" size="3" maxlength="3"/>
<?php } ?>
我这里有两个问题。首先是当我提交表单并且控件去提交if block我的产品列表是空的。如果我在加载页面时已填充,为什么它是空的。另外,如何获取用户输入的每件产品的数量。
提前致谢。
答案 0 :(得分: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或甚至数量_&lt;&gt;因此,如果您需要一次更新多个产品数量,则可以区分服务器上的提交。为这些字段赋予相同值的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(); ?>"/>