【问题标题】:While loop - Only one input from many others is sending a value through POSTWhile 循环 - 许多其他输入中只有一个输入通过 POST 发送值
【发布时间】:2017-04-11 15:13:51
【问题描述】:

这是我从名为 optionale 的表中获取输入名称和值的代码,并使用这些代码:

<form role="form" autocomplete="off" action="includes/functions/fisa-init.php" method="POST">
<?php
   connectDB();
   $query = mysqli_query($mysqli, "SELECT * FROM `optionale`") or die(mysqli_error($mysqli));
   while($row = mysqli_fetch_array($query))
   { 
?>
   <span><?php echo $row['denumire']; ?></span>
   <input type="text" name="nrBucati">
   <input type="hidden" value="<?php echo $row['cod']; ?>" name="codProdus">
<?php } ?>
</form>

可选表如下所示:

HTML 如下所示:

正如您在最后一张图片中看到的,我在 HTML 中拥有一个输入名称(取自可选表)和我在其中写入值的实际输入。

fisa-init.php:

$stmt3 = $mysqli->prepare("
            UPDATE 
            `stocuri` 
            SET 
            `cantitate` = `cantitate` - ?
            WHERE `cod` = ?
            ");


    $stmt3->bind_param("is", $bucata, $cod);

    // set parameters and execute
    $bucata = mysqli_real_escape_string($mysqli, $_POST['nrBucati']);
    $cod = mysqli_real_escape_string($mysqli, $_POST['codProdus']);

    if (!$stmt3->execute()) 
        {
            echo "Execuția a întâmpinat o eroare: (" . $stmt3->errno . ") " . $stmt3->error;
        }
    $stmt3->close();

    $mysqli->close();

在上面的代码 (fisa-init.php) 中,我试图从我的 HTML 中获取所有输入值并更新另一个名为 stocuri 的表中的行:

如您所见,stocuri 表中只有第二行被更新,但我在所有 5 个输入中都写入了值。它只得到最后一个输入。

如何修改 while 循环以获取我所有的输入值?

如果有什么不清楚的地方,我道歉一百次。我将解释所有需要的信息。

附:表optionale 中的cod 与表stocuri 中的cod 相同。这样,我就知道在哪里更新值了。

【问题讨论】:

  • 哇,你很快就理解了我的问题。谢谢你的答复。我忘了我必须使用 name="codProdus[]" 之类的东西。我会搜索它。
  • 谢谢。请发布答案以选择它。这对您的声誉有好处:D.

标签: php mysql while-loop datatables


【解决方案1】:

每个&lt;input&gt; 必须有一个单独的名称或命名数组。

所以给每个人一个额外的数字,比如name1,name2,或者使用一个命名数组,比如name[]

最后name="codProdus[]" 是你的解决方案。

在这里阅读更多 HTML input arrays

祝你有美好的一天

【讨论】:

  • PHP 警告:mysqli_real_escape_string() 期望参数 2 为字符串,在第 196 行的 C:\wamp64\www\includes\functions\fisa-init.php 中给出的数组。这是什么意思?跨度>
  • @BogdanC $_POST['codProdus'] 是一个数组。
  • 我在 html 中切换到 name="codProdus[]" 和 name="nrBucati[]"。
  • 您可以执行implode(', ',$_POST['codProdus']) 来从中获取一个字符串,如下所示:a, b, carray('a','b','c') 这样的数组之前的内容,或者您​​必须循环foreach($_POST['codProdus'] as $codProducs) 并编写foreach 条目进入数据库。取决于你的逻辑。但为了更好地打开一个关于 SO 的新问题
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2022-11-14
  • 2013-04-23
  • 2013-10-04
  • 2013-01-06
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多