我正在尝试创建一个非常简单的库存管理系统。我能够显示表格'部分'中的所有项目,并在文本框中显示金额。但是,当我在文本框中将值从例如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>€ ".$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中显示的值,并按我的提交按钮,我希望它更新数据库中的值。
有谁知道我做错了什么?有任何想法吗?我应该读的文章? 所有的帮助将不胜感激。
谢谢。
答案 0 :(得分:0)
正如我所见,你做错了。
首先,你不能在多个td元素中使用form标签。
您没有关闭表单标记,仅在结尾处。 (因此,如果它循环6次,你将打开6个表格,但一个表格结束!)。
在更新时,你选择了行[0] - 它是在行外的循环吗?
即使您更新它,它也会再次显示错误的结果。更新应该高于选择!因此它获得了新更新的价值。
怎么做:
示例:
<?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>€ ".$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”值是用户输入。由于提交值可以更改。