order.html.php的代码:
<body>
<p> Place order</p>
<table>
<thead>
<tr>
<th>Item No.</th>
<th>Name</th>
<!--<th>Mrp</th>-->
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<form id="form1" action="" method="post" >
<tbody>
<?php $id = 0 ;foreach ($dataProduct as $productData): ?>
<tr>
<td><?php echo ++$id ; ?></td>
<td><?php echo $productData['productName']; ?></td>
<td><?php echo $productData['productPrice'];?></td>
<td><input type="number" name="<?php echo $productData['productId']; ?>"/></td>
</tr>
<?php endforeach; ?>
<div><input type="hidden" name="add" value="placeorder"/>
<input type="submit" value="Place Order"/>
<div>
</tbody>
</form>
</table>
</body>
开发者工具中提供的和dom是:
<body>
<p> Place order</p>
<div><input type="hidden" name="add" value="placeorder">
<input type="submit" value="Place Order">
<div>
</div></div>
<table>
<thead>
<tr>
<th>Item No.</th>
<th>Name</th>
<!--<th>Mrp</th>-->
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<form id="form1" action="" method="post" ></form>
<tbody>
<tr>
<td>1</td>
<td>hp keyboard old</td>
<td>400</td>
<td><input type="number" name="1"></td>
</tr>
<tr>
<td>2</td>
<td>lenovo keyboard old</td>
<td>450</td>
<td><input type="number" name="2"></td>
</tr>
<tr>
<td>3</td>
<td>kaspersky antivirus</td>
<td>430</td>
<td><input type="number" name="9"></td>
</tr>
</tbody>
</table>
</body>
查看提交的位置以及order.html.php和结果dom。 因为这个dom结构order.html.php无法提交驻留在输入字段中的值。
这里是相关问题的帖子,但不完全代表这里的内容, Retrieve data from HTML table to PHP
答案 0 :(得分:0)
尝试正确的html结构:
<body>
<p> Place order</p>
<form id="form1" action="" method="post" >
<table>
<thead>
<tr>
<th>Item No.</th>
<th>Name</th>
<!--<th>Mrp</th>-->
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<?php $id = 0 ;foreach ($dataProduct as $productData): ?>
<tr>
<td><?php echo ++$id ; ?></td>
<td><?php echo $productData['productName']; ?></td>
<!--<td><?php echo $productData['mrp']; ?></td>-->
<td><?php echo $productData['productPrice'];?></td>
<td><input type="number" name="<?php echo $productData['productId']; ?>"/></td>
</tr>
<?php endforeach; ?>
<tr>
<td colspan="4">
<input type="hidden" name="add" value="placeorder"/>
<input type="submit" value="Place Order"/>
</td></tr>
</tbody>
</table>
</form>
</body>
答案 1 :(得分:0)
<form>
标记打包表格。productId
作为name="$productId"
并不是很好,而是使用name="products[$productId]"
这样的内容,以便在表单提交后,将它们分组到与数组相同的变量。示例代码:Sample Demo
$dataProduct = array(
array('productId' => 1, 'productName' =>'hp keyboard old', 'productPrice' => 400),
array('productId' => 2, 'productName' =>'lenovo keyboard old', 'productPrice' => 430),
array('productId' => 9, 'productName' => 'kaspersky antivirus', 'productPrice' => 430),
);
if(isset($_POST['submit'])) {
$values = $_POST['products']; // get all the grouped values
$total = array();
foreach($values as $productId => $quantity) { // loop values
foreach($dataProduct as $productData) {
if($productData['productId'] == $productId) {
// simple multiplication, quantitiy times price for each item
$total[$productId] = $productData['productPrice'] * $quantity;
}
}
}
echo '<pre>';
print_r($total);
echo '</pre>';
}
?>
<form method="POST">
<table cellpadding="10">
<thead>
<tr>
<th>Item No.</th>
<th>Name</th>
<!--<th>Mrp</th>-->
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<?php $id = 0 ; foreach($dataProduct as $productData): ?>
<tr>
<td><?php echo ++$id ; ?></td>
<td><?php echo $productData['productName']; ?></td>
<td><?php echo $productData['productPrice'];?></td>
<td><input type="number" name="products[<?php echo $productData['productId']; ?>]"/></td>
</tr>
<?php endforeach; ?>
<tr>
<td><input type="submit" name="submit" /></td>
</tr>
</tbody>
</table>
</form>
例如,在表单中,我输入了所有文本框,数量为2. print_r()
应该像这样产生:
Array
(
[1] => 800
[2] => 860
[9] => 860
)
指数作为键,值是每个数量乘以价格的总数