我创建了一个生成发票的页面。我使用php从数据库获取产品数据。现在,当我尝试生成发票并使用复选框选择某些产品时。它只给我选中复选框的值,即“产品名称”,但它没有给我相关复选框的值,包含其价格和数量等。以下是我的代码: -
<?php
$query = mysqli_query($conn, "SELECT * from products order by product_name asc");
while ($row = mysqli_fetch_array($query))
{
$product_id = $row['product_id'];
$product_name = $row['product_name'];
echo "<tr>
<td><input type='checkbox' name='product_id[]' value='$product_id'> $product_name</td>
<td><input type='text' name='product_ref[]' class='form-control'></td>
<td width='2%'></td>
<td><input type='text' name='quantity[]' class='form-control'></td>
<td width='2%'></td>
<td><input type='text' name='unit_price[]' class='form-control'></td>
</tr>";
答案 0 :(得分:0)
<?php
$query = mysqli_query($conn, "SELECT * from products order by product_name asc");
while ($row = mysqli_fetch_array($query))
{
$product_id = $row['product_id'];
$product_name = $row['product_name'];
echo "<tr>
<td><input type='checkbox' name='product_id[]' value='$product_id'> $product_name</td>
<td><input type='text' name='product_ref[]' class='form-control'></td>
<td width='2%'></td>
<td><input type='text' name='quantity[]' class='form-control'></td>
<td width='2%'></td>
<td><input type='text' name='unit_price[]' class='form-control'></td>
</tr>";
答案 1 :(得分:0)
您需要某种方式在提交时将表单输入与正确的产品相关联。
以下是使用产品ID作为键的可能方法:
<?php
$products =
[
[
'id' => 'foo',
'name' => 'Food Packs'
],
[
'id' => 'bar',
'name' => 'Bar Snacks'
]
];
if($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach($products as $product)
{
$id = $product['id'];
$quantity = $_POST['quantity'][$id] ?? null;
$price = $_POST['price'][$id] ?? null;
if($quantity && $price) {
// DB INSERT HERE
var_dump($id, $quantity, $price);
}
}
}
echo '<form method="post">';
foreach($products as $product)
{
echo
"<div>
{$product['name']}<br />
Quantity: <input type='text' name='quantity[{$product['id']}]'>
Price: <input type='text' name='price[{$product['id']}]'>
</div>";
}
echo '<input type="submit"></form>';
对于多个插入,您可能希望使用并回收预准备语句。您之前列出的SQL容易受到注入攻击。