php - 在一个表中更新具有多个值的多个列

标签 php mysql mysqli sql-update

我正在制作一个非常简单的库存控制系统。在用户将能够进行更新的页面中,我列出了表中的所有内容并将所有内容都放在文本字段中,例如图像。 Stock control example

因此,用户只需更改他想要的内容,当他点击提交时,它会更新表中的每一行,并显示其各自的值。但是我的代码不起作用。我不知道如何进行这种更新,而且我确定它是错误的,因为它甚至不起作用。这是我的表格:

<form action="update_pcs.php" method="POST">
            <label>Peça</label>
            <label for="txtQtd" id="qtd">Qtd.</label>
            <br/>
                <?php foreach($rtn as $pcs){ ?>
                        <input type="text" name="txtNome[]" id="txtNome" value="<?=$pcs['pc_nome']?>" />
                        <input type="text" name="txtQtd[]" id="txtQtd" value="<?=$pcs['num']?>"/>
                        <input type="hidden" name="txtId[]" id="txtId" value="<?=$pcs['id']?>" />
                        <br />
                        <br />
                <?php } ?>
            <br />
            <br />
            <input type="submit" value="Enviar" name="btnEnvia" />
    </form>

还有我的文件 update_pcs.php,它应该在表中进行更新。

<?php

    include_once 'mdl.php';
    $conexao = new modelDB();

    $qtd = $_POST['txtQtd'];
    $nom = $_POST['txtNome'];
    $id = $_POST['txtId'];

    /*This makes the $dados array keep in the value ['nome'] another array, the value ['qtd'] another array and ['id'] another array*/
    $dados = array('nome'=>$nom,
                    'qtd'=>$qtd,
                    'id'=>$id);


    foreach($dados as $dado){

        /* I'm doing it that way but it isn't working */
        $nomeAt = $dado['nome'];
        $qtdAt = $dado['qtd'];
        $id = $dado['id'];  

        $conexao->alteraDb("update pcs_estq set pc_nome ='{$nomeAt}', num = '{$qtdAt}' where id = '{$idAt}'");
    }

我的函数一定是正确的,因为当我更改值的 php 变量时,它起作用了。我怎样才能做到这一点?

最佳答案

通过在您的 html 表单中发送数组名称,您将收到数组发布变量。

首先像下面这样更改您的表单,以帮助发布更合适的数据。

<input type="text" name="values[<?=$pcs['id']?>][Nome]" id="txtNome" value="<?=$pcs['pc_nome']?>" />
<input type="text" name="values[<?=$pcs['id']?>][Qtd]" id="txtQtd" value="<?=$pcs['num']?>"/>
<input type="hidden" name="values[<?=$pcs['id']?>][id]" id="txtId" value="<?=$pcs['id']?>" />

其实这样你不需要发送id,但我发送是为了简单解释。

现在你发帖,你会收到一个像这样的数组:

values => array (
                 1 => array ( 
                            'id'=> 1, 
                            'Nome' => 'Some text', 
                            'Qtd' => 1
                          ),
                 2 => .... 
                )

现在您可以获取数据并插入数据库。

$values = $_POST['values'];

foreach ($values as $dado) {
    $nomeAt = $dado['Nome'];
    $qtdAt = $dado['Qtd'];
    $id = $dado['id'];  

顺便说一句,我强烈建议使用 pdo,如果不是,请确保在通过数据库查询之前验证您的数据。

关于php - 在一个表中更新具有多个值的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418938/

相关文章:

php - 如果数据库值超过某个日期,您可以使用 mysql 更改数据库值吗?

phpMyAdmin错误: Cannot access browser storage

php - 通过比较值 PHP 从两个不同的数组创建一个大数组

php - 使用连接或子查询需要来自 mysql 中几个表的数据

mysql - 如何减少 MySQL 中的整数?

php - 看不出我的脚本有什么问题,似乎可以在另一个网站上运行 PHP 登录脚本

session - PHP:在 session 中断 session 中存储闭包

php - AWS RDS 连接最佳实践

php - 更新sql表值

mysql - 程序不会读取我的 if 语句