【问题标题】:How to get textboxs values if a checkbox is checked如果选中复选框,如何获取文本框值
【发布时间】:2018-04-10 12:45:50
【问题描述】:

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

【问题讨论】:

  • 您的帖子中有很多代码,如果需要,请考虑将其删减以创建一个包含硬编码数据的最小示例。
  • 看,这是从数据库中检索产品的代码。当我尝试选择特定产品时,它没有给我数量和单价等值。
  • 你完全忽略了我的评论,好像你从来没有理解过一样。
  • $product_name tr>
  • 对不起,我在这里发布了小代码。但代码格式不正确。

标签: php jquery checkbox


【解决方案1】:

您需要某种方式在提交时将表单输入与正确的产品相关联。

这是一种使用产品 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 容易受到注入攻击。

【讨论】:

    【解决方案2】:
    <?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>";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多