如果选中复选框,如何获取文本框值

时间:2018-04-10 12:45:51

标签: php jquery checkbox

我创建了一个生成发票的页面。我使用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>";

2 个答案:

答案 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容易受到注入攻击。