目的:通过修改PHP表中显示的数据,使用onchange函数更新库存数据库。
我从数据库中提取数据并将其显示在表格中。我有数据显示在文本字段中,因此它们是可编辑的。编辑数据后,我的函数使用POST提供的数据,最好是项目ID和值,用于更新库存。
这是我的'inventory.php'代码:
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$inventory = mysqli_query($db, "SELECT item_id, item_name, item_quantity, item_cost, item_price FROM inventory");
$num_rows = mysqli_num_rows($inventory);
mysqli_close($db);
echo "<form id=\"update_add_inventory\" action=\"\" method=\"post\">";
echo "<table>";
echo "<tr>";
echo "<th>Item ID</th>";
echo "<th>Item Name</th>";
echo "<th>Item Quantity</th>";
echo "<th>Item Cost</th>";
echo "<th>Item Price</th>";
echo "</tr>";
$i = 1;
while($row = mysqli_fetch_array($inventory))
{
echo "<tr>";
echo "<td>".$row['item_id']."</td>";
echo "<td><input type=\"text\" name=\"item_".$i."_name\" onchange=\"updateInventory('update_inventory.php')\" value='".$row['item_name']."' /></td>";
echo "<td><input type=\"text\" name=\"item_".$i."_quantity\" onchange=\"updateInventory('update_inventory.php')\" value='".$row['item_quantity']."' /></td>";
echo "<td><input type=\"text\" name=\"item_".$i."_cost\" onchange=\"updateInventory('update_inventory.php')\" value='".$row['item_cost']."' /></td>";
echo "<td><input type=\"text\" name=\"item_".$i."_price\" onchange=\"updateInventory('update_inventory.php')\" value='".$row['item_price']."' /></td>";
echo "</td></tr>";
$i++;
}
echo "</table><br>";
echo "</form>";
这是我的'onchange函数':
function updateInventory(action)
{
document.getElementById('update_add_inventory').action = action;
document.getElementById('update_add_inventory').submit();
}
这是我的'update_inventory.php'代码:
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$inventory = mysqli_query($db, "SELECT item_id, item_name, item_quantity, item_cost, item_price FROM inventory");
$num_rows = mysqli_num_rows($inventory);
$i = 1;
for ($n=1; $n<=$num_rows; $n++) {
if (isset($_POST['item_'.$i.'_name'])) {
$item_id = $_POST['item_'.$i.'_id'];
$item_name = $_POST['item_'.$i.'_name'];
$result = mysqli_query($db, "UPDATE inventory SET item_name='".$item_name."' WHERE item_id='".$item_id."'");
} else if (isset($_POST['item_'.$i.'_quantity'])) {
$item_id = $_POST['item_'.$i.'_id'];
$item_name = $_POST['item_'.$i.'_quantity'];
$result = mysqli_query($db, "UPDATE inventory SET item_quantity='".$item_quantity."' WHERE item_id='".$item_id."'");
} else if (isset($_POST['item_'.$i.'_cost'])) {
$item_id = $_POST['item_'.$i.'_id'];
$item_name = $_POST['item_'.$i.'_cost'];
$result = mysqli_query($db, "UPDATE inventory SET item_cost='".$item_cost."' WHERE item_id='".$item_id."'");
} else if (isset($_POST['item_'.$i.'_price'])) {
$item_id = $_POST['item_'.$i.'_id'];
$item_name = $_POST['item_'.$i.'_price'];
$result = mysqli_query($db, "UPDATE inventory SET item_price='".$item_price."' WHERE item_id='".$item_id."'");
}
$i++;
}
mysqli_close($db);
header('Location: inventory.php');
我遇到的问题是我无法找到将“项目ID”和要修改的值传递给更新脚本的方法。我可以通过传递值所需的数据,然后使用list和explode来分隔它们,但通过这样做,我在每个文本字段中显示项目ID,这是不好的。
如果您知道如何使用onchange功能将两个数据传递到脚本,我将非常感谢您的帮助。
答案 0 :(得分:1)
您可以将其作为参数添加到onChange函数中,然后在提交之前使用此值更新表单上的隐藏字段。
PHP
updateInventory('update_inventory.php', ".$row['item_id'].")
的JavaScript
function updateInventory(action, item_id){
// update hidden form value with item_id
document.getElementById('item_id').value = item_id;
document.getElementById('update_add_inventory').action = action;
document.getElementById('update_add_inventory').submit();
}