PHP& SQL - 更新查询无法更新值

时间:2016-10-19 10:23:17

标签: php mysql sql

我正在尝试创建一个非常简单的库存管理系统。我能够显示表格'部分'中的所有项目,并在文本框中显示金额。但是,当我在文本框中将值从例如0更改为5并按下我的提交按钮时,它不会更新股票。

下面是我的代码,我没有很多关于更新查询的经验,但我在php.net上看到了它,显然。

                      <?php
                  echo "<table width=\"800\" class=\"nieuws\">";
                    $db=mysqli_connect("localhost","root","","lichtwinkel");
                    $p=mysqli_query($db, "SELECT * FROM parts WHERE product LIKE 1");

                    echo "<form method='post' action=''>";
                    echo "<tr><th></th><th>Onderdeel nummer</th><th>Eigenschappen</th><th>Prijs</th><th>Voorraad</th></tr>";

                    while ($row = mysqli_fetch_array($p)){
                      echo "<tr>";
                      echo "<td><img class='lamp' src='../css/images/".trim($row['partnr']).".png' alt='Geen afbeelding beschikbaar'></td>";
                      echo "<td>".$row['partnr']."</td>";
                      echo "<td>".$row['specs']."</td>";
                      echo "<td>&euro; ".$row['price']."</td>";
                      echo "<td><input type='text' id='aantal' name='aantal' value=$row[voorraad] /></td>";
                      echo "<td><input type='submit' id='update' name='update' value='Update' /></td>";
                      echo "</tr>";
                    }
                    echo "</table>";

                    if(isset($_POST['aantal']) && $_POST['update']) {
                      $y = $_POST['aantal'];
                      $p=mysqli_query($db, "UPDATE parts SET voorraad = '$y' WHERE partnr = $row[0]");
                    }

                    echo "</form>"
                  ?>

简单地说,我想要实现的目标如下: 每当我更改texbox中显示的值,并按我的提交按钮,我希望它更新数据库中的值。

有谁知道我做错了什么?有任何想法吗?我应该读的文章? 所有的帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

正如我所见,你做错了。

首先,你不能在多个td元素中使用form标签。

您没有关闭表单标记,仅在结尾处。 (因此,如果它循环6次,你将打开6个表格,但一个表格结束!)。

在更新时,你选择了行[0] - 它是在行外的循环吗?

即使您更新它,它也会再次显示错误的结果。更新应该高于选择!因此它获得了新更新的价值。

怎么做:

  1. 首先为所有更新制作一个表单。
  2. 使用提交按钮获取值DATABASE_ID。
  3. 将“aantal”的名称改为“aantalDATABASE_ID”。
  4. 提交检查$ _POST ['update'],并使用它的值(DATABASE_ID)获取输入$ _POST [“aantal”。$ _ POST ['update']]。
  5. 更新,你有你需要的一切。
  6. 示例:

    <?php
    echo "<form method='post' action=''>";
    echo "<table width=\"800\" class=\"nieuws\">"   
    $db=mysqli_connect("localhost","root","","lichtwinkel");
    
    if(isset($_POST['update']) && !empty($_POST['update'])) {
        $y = $_POST['aantal'.$_POST['update']];
        $p=mysqli_query($db, "UPDATE parts SET voorraad = '".$y."' WHERE partnr = '".$_POST['update']."'");
        }
    
    $p=mysqli_query($db, "SELECT * FROM parts WHERE product LIKE 1");
    echo "<tr><th></th><th>Onderdeel nummer</th><th>Eigenschappen</th><th>Prijs</th><th>Voorraad</th></tr>";
    while ($row = mysqli_fetch_array($p)){
        echo "<tr>";
            echo "<td><img class='lamp' src='../css/images/".trim($row['partnr']).".png' alt='Geen afbeelding beschikbaar'></td>";
            echo "<td>".$row['partnr']."</td>";
            echo "<td>".$row['specs']."</td>";
            echo "<td>&euro; ".$row['price']."</td>";
            echo "<td><input type='text' id='aantal' name='aantal".$row[0]."' value='".$row[voorraad]."' /></td>";
            echo "<td><input type='submit' id='update' name='update' value='".$row[0]."' /></td>";
        echo "</tr>";
    }
    echo "</table>";
    echo '</form>';
    ?>
    

    毕竟,请注意SQL注入。 “aantal”值是用户输入。由于提交值可以更改。