如何使用onChange传递多个值来更新php表中的数据库

时间:2013-05-18 01:42:54

标签: php javascript mysql

目的:通过修改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功能将两个数据传递到脚本,我将非常感谢您的帮助。

1 个答案:

答案 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();
}