【问题标题】:multiple post array loop doesn't working多个后数组循环不起作用
【发布时间】:2016-11-25 22:49:03
【问题描述】:
<?php
    $sql = "SELECT * FROM product ORDER BY product_id DESC";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {

            echo "" . $row["product"] . "\n\n<input type='checkbox' name='product[]' value=" .$row["product"] . ">\n         
     Quantity\n\n<select name='quantity[]'>
        <option value='1'>1</option>
        <option value='2'>2</option>
        <option value='3'>3</option>
    </select><br />";
        }

    ?>
    <button name="submit" type="submit">submit</button><br />

    <?php

        if (isset($_POST['submit'])) {
            if (is_array($_POST['product'])) {
                foreach ($_POST['product'] as $key => $product_name) {
                    $quantity = $_POST['quantity'][$key];
                    echo $product_name . "\n";
                    echo $quantity . "<br>";

                }
            }
        }
    }

    ?>

我想选择多个产品和数量,但它没有给我选择的数量值。


在示例图片 1 中,您可以看到我选择了 2 个产品

  • 华硕2
  • 宏碁 3

但是如果点击提交,我会得到类似

的结果
  • 华硕1
  • 宏碁 1

【问题讨论】:

  • 第一个和第二个下拉列表的值为 1,因此结果是正确的。始终提交所有数量值。
  • 您的问题是仅发布选中的复选框,但发布了所有选择。因此,您需要将 2 链接在一起,以便它们的键匹配。您可以添加一个简单的计数器变量,即。 $i=0, name='product[$i]'/name='quantity[$i]'
  • 你看到我选择了什么产品了吗? @Maarten van Middelaar
  • 感谢您的帮助,但我只是一个学习者,而不是 php 专家。请您更正我的脚本并将其张贴在这里好吗? @肖恩
  • @MaartenvanMiddelaar 发布了一个与我提到的内容相同的答案。我的例子是使用一个简单的计数器变量,他使用$row['product_id'](或任何你的行ID列名)。

标签: php sql arrays mysqli


【解决方案1】:

尝试使用产品 ID 将复选框链接到选择框。:

$sql = "SELECT * FROM product ORDER BY product_id DESC";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {

            echo "" . $row["product"] . "\n\n<input type='checkbox' name='product[".$row['product_id']."]' value=" .$row["product"] . ">\n         
     Quantity\n\n<select name='quantity[".$row['product_id']."]'>
        <option value='1'>1</option>
        <option value='2'>2</option>
        <option value='3'>3</option>
    </select><br />";
        }

【讨论】:

  • 完美……你太棒了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2019-11-26
  • 1970-01-01
  • 2014-06-12
相关资源
最近更新 更多