PHP MySQL上有多个条目

时间:2016-08-25 19:13:47

标签: php mysql

当我尝试输入多个条目时,我的代码中出现问题。我尝试了不同的解决方案,但问题没有解决。唯一的问题是获得字段的价值' valor'

<? $produtocotacao = "select * from cadcotacao2 WHERE idcotacao = '$idcotacao' ORDER by id DESC";
$result = mysql_query ($produtocotacao, $marechal) or die(mysql_error());
while ($linha = mysql_fetch_array ($result)) {
    $id = $linha["id"];
    $idproduto = $linha["idproduto"];
    $produto = $linha["produto"];
    $user = $linha["user"];

    ?>
    <form id="form6" method="post" action=""><tr>
    <td align="center"><? echo $linha['idproduto']; ?></td>
    <td align="center"><? echo $linha['produto']; ?></td>
    <td align="left" valign="middle"> 
    <input name="id6[]" type="hidden" value="<? echo $linha['id']; ?>" />
    <input name="idcotacao[]" type="hidden" value="<? echo $idcotacao; ?>" />
    <input name="idproduto[]" type="hidden" value="<? echo $linha['idproduto']; ?>" />
    <input name="idfornecedor[]" type="hidden" value="<? echo "teste"; ?>" />
    <input name="ip[]" type="hidden" value="<? echo $ip; ?>" />
    <input name="valor[]" type="text" id="valor" placeholder="Ex: 110,50" class="m-wrap span6" />
    </td>
    </tr>

    <?
    if(isset($_POST['done2'])){

        $cotacao = array();

        $cotacao[] = array('id' => $linha['id'], 'idcotacao' => $idcotacao, 'idproduto' => $idproduto, 'idfornecedor' => "teste", 'ip' => $ip, 'valor' => $_POST['valor']);

        foreach ($cotacao as $rst) {
            $id = $rst['id'];
            $idcotacao = $rst['idcotacao'];
            $idproduto = $rst['idproduto'];
            $idfornecedor = $rst['idfornecedor'];
            $ip = $rst['ip'];
            $valor = $rst['valor'];

            $sql = "INSERT INTO `cadcotacao4` (`ip`, `idcotacao`, `idproduto`, `idfornecedor`, `valor`) VALUES ('{$ip}', '{$idcotacao}', '{$idproduto}', '{$idfornecedor}', '{$valor}');";

            if(mysql_query($sql)){
                $erro = "Cotação Respondida!";
            }
        }

    }
} ?> 

代码在mysql中记录下面这些行:

id  timestamp           ip           idforn idprod  forn    valor
47  2016-08-25 15:47:45 179.209.99.217  2   6745    teste   Array
48  2016-08-25 15:47:45 179.209.99.217  2   1       teste   Array

1 个答案:

答案 0 :(得分:0)

您的问题的难点在于您的代码在结构上看起来非常有缺陷。如果我误解了你想要做的事情,请原谅我。

在客户端执行任何动态HTML和/或JavaScript等之前,您似乎正在制作经典的PHP新手错误,即没有意识到页面上的所有PHP代码都已执行(在服务器上)。

所以,我倾向于在脚本的开头放置任何服务器端处理 - 提醒你它将首先完成 - 首先放置POSTed表单/结果数据处理,然后准备要显示的数据你的新页面。

其次,如果您使用多个类型输入(valor []),只有在一个表单中重复输入才真正有意义 - 那么为什么要为每一行重新声明表单?只有一个表格会被张贴。

使用一个带有重复多个输入的表单(如果您想通过一次提交更改多行)或使用单独的表单(最好用不同的名称)和简单的输入( valor)(显示多个结果,但一次只更改一个)而不是倍数(valor [])。

所以,我会重新安排你的代码:

<?php
        if(isset($_POST['done2'])){
            $ids=$_POST['id6'];
            $idcotacaos = $_POST['idcotacao'];
            $idprodutos = $_POST['idproduto'];
            $idfornecedors = $_POST['idfornecedor'];
            $ips = $_POST['ip'];
            $valors = $_POST['valor'];
            $i=0;
            foreach($ids as $id)
            {
                $idcotacao = $idcotacaos[$i];
                $idproduto = $idprodutos[$i];
                $idfornecedor = $idfornecedors[$i];
                $ip = $ips[$i];
                $valor = $valors[$i];

                $sql = "INSERT INTO `cadcotacao4` (`ip`, `idcotacao`, `idproduto`, `idfornecedor`, `valor`) VALUES ('{$ip}', '{$idcotacao}', '{$idproduto}', '{$idfornecedor}', '{$valor}');";

                if(mysql_query($sql)){
                    $erro = "Cotação Respondida!";
                }
                $i++;
            }

        }

        $produtocotacao = "select * from cadcotacao2 WHERE idcotacao = '$idcotacao' ORDER by id DESC";
        $result = mysql_query ($produtocotacao, $marechal) or die(mysql_error());
?>
                <form id="form6" method="post" action="">
<?php
        while ($linha = mysql_fetch_array ($result)) {
            $id = $linha["id"];
            $idproduto = $linha["idproduto"];
            $produto = $linha["produto"];
            $user = $linha["user"];

?>
                <tr>
                <td align="center"><? echo $linha['idproduto']; ?></td>
                <td align="center"><? echo $linha['produto']; ?></td>
                <td align="left" valign="middle"> 
                <input name="id6[]" type="hidden" value="<? echo $linha['id']; ?>" />
                <input name="idcotacao[]" type="hidden" value="<? echo $idcotacao; ?>" />
                <input name="idproduto[]" type="hidden" value="<? echo $linha['idproduto']; ?>" />
                <input name="idfornecedor[]" type="hidden" value="<? echo "teste"; ?>" />
                <input name="ip[]" type="hidden" value="<? echo $ip; ?>" />
                <input name="valor[]" type="text" id="valor" placeholder="Ex: 110,50" class="m-wrap span6" />
                <input type="submit" name="done2" value="Save Changes">
                </td>
                </tr>

<?php
        } 
?> 
                </form>

通过id循环并获取该循环中每个其他multiple [] POST值的元素然后使用这些元素执行sql的更改。希望这是你想要达到的目标。