PHP我可以在while循环之外获得行[“name”]的值吗?

时间:2017-04-06 18:01:13

标签: php mysql while-loop

基本上我所拥有的是一个表单中的简单表。 目标是能够在当前金额之上添加金额。目前我的数据库中有一个包含2个外键的表。在这种情况下,位置代码和产品代码(不介意荷兰语翻译):

if(isset($_POST['submit'])){
    // These both give me a undefined index error.
    $locatiecode = $_POST["locatiecode"];
    $productcode = $_POST["productcode"];

    $input = $_POST["input"];

    //I suppose the SQL query here below should work once I have fixed the other issues?
$sql2 = "UPDATE aantal SET aantal = aantal + '$input' WHERE locatiecode = $locatiecode AND productcode = productcode";
    $result2 = $con->query($sql2);
}

这是提交部分。下面我有一个while循环,从表中选择数据,但再次不介意荷兰语:

<form method="post" action="">
    <div style="width: 50%; margin: 0 auto; text-align: center;">
        <table class="table">
            <thead>
                <tr> 
                    <th>Locatiecode</th>
                    <th>Locatie</th>
                    <th>Productcode</th>
                    <th>Product</th>
                    <th>Fabriek</th>
                    <th>Inkoopprijs</th>
                    <th>Verkoopprijs</th>
                    <th>Aantal</th>

                </tr>
            </thead>
            <tbody>
                <?php

                $sql = "SELECT * FROM locatie INNER JOIN voorraad ON locatie.locatiecode = voorraad.locatiecode INNER JOIN product ON product.productcode = voorraad.productcode";
                $result = $con->query($sql);

                while($row = $result->fetch_assoc()) {
                    echo "<tr>";
                    echo "<th>" . $row["locatiecode"] . "</th>";
                    echo "<th>" . $row["locatie"] . "</th>";
                    echo "<th>" . $row["productcode"] . "</th>";
                    echo "<th>" . $row["productnaam"] . "</th>";
                    echo "<th>" . $row["fabrieknaam"] . "</th>";
                    echo "<th>" . $row["inkoopprijs"] . "</th>";
                    echo "<th>" . $row["verkoopprijs"] . "</th>";
                    echo "<th>" . $row["aantal"] . "</th>";
                    echo "<th><input type='text' name='input' id='aantalinvoer'></th>";
                    echo "<th><input type='submit' name='submit' id='submit'></th>";
                    echo "</tr>";
                }

                ?>
            </tbody>
        </table>
    </div>
</form>

所以现在发生了什么,我得到一行,每行有一个更新按钮(提交按钮)和一个输入字段。就像现在一样,名为input的输入字段无法POST。我尝试提交时,位置和产品代码为我提供了一个未定义的索引。

这是否与while循环有关?

非常感谢帮助!

2 个答案:

答案 0 :(得分:0)

$_POST["field"]引用表单中的相应输入字段。在您的示例中,您没有带name="locatiecode"

的输入字段

为了通过帖子可以访问productcodelocatiecode值,您应该将HTML更改为类似

echo "<th>
        {$row['productcode']}
        <input type=\"hidden\" name=\"productcode\" value=\"{$row['productcode']}\" />
    </th>";

答案 1 :(得分:0)

并不完全明白你想做什么。

  • 如果您只想提交点击提交的特定行的值,您必须为每个循环添加一个表单,或者您可以使用AJAX(我认为最好的方式)来执行此操作。
  • 如果您想一键发送所有输入值,我建议您从循环中删除您的提交,并在表格的顶部或底部添加一个提交,这样用户可以清楚地知道什么他到底在做什么。你也把你输入的名字放在提到的post giftnuss中,并且POST会发送一系列值。

在任何这种情况下,您都必须使用locatiecode和productcode的值添加隐藏的输入。

如上所述,您的SQL代码非常不安全。