如何在更新之前和更新之后提交表单的值

时间:2017-09-28 15:10:35

标签: php mysqli

我有一个从数据库中检索数据并在相应字段中显示的表单。然后,用户可以更改表单并更新这些值。我可以通过单击提交按钮正确显示数据库中的数据(SELECT),并通过单击另一个提交按钮更新它(UPDATE)。我想要做的是将更新前的所有数据存储在一个单独的表中,作为审计日志,它将告诉我以前的字段是什么以及新的更新是什么样的。我想在同一个提交按钮上同时拥有Update和Insert查询。如何在表格中插入“以前”值。

这是我的工作更新声明: -

if(isset($_POST['submit'])){
    // Updating the dealer info using sfid

$sql = "UPDATE tbl_dealer_info ";
$sql .= "SET phone = '".$phone."', email = '".$email."', SFID = '".$sfid."', account_name = '".$account_name."', parent_account = '".$parent_account."', awi_code = '".$awi_code."', sales_portal_id = '".$sales_portal_id."', iae = '".$iae."', rsm_val = '".$rsm_val."', door_type_val = '".$door_type_val."', payment_method_val = '".$payment_method_val."', region_val = '".$region_val."', street_address = '".$street_address."', city = '".$city."', state = '".$state."', zip = '".$zip."', area = '".$area."', market = '".$market."', boost_app = '".$boost_app."', virgin_app = '".$virgin_app."', virgin_mob_app = '".$virgin_mob_app."', start_date = '".$start_date."', bank_name = '".$bank_name."', bank_acc_number = '".$bank_acc_number."', routing_number = '".$routing_number."' WHERE SFID = '".$sfid."' ";
$sql .= "LIMIT 1";
$result = mysqli_query($conn, $sql);   

2 个答案:

答案 0 :(得分:-2)

一种简单的方法是使用隐藏值示例

<form>
<input type="text" name="phoneNumberNew">
<input type="hidden" name="phoneNumberOld">
</form>

使用此功能,您可以将表单提交到表格所在的位置,并填充表格,其中文本框是新数据,隐藏的表格将是您的旧数据。从那里你可以使用更多的隐藏值或你认为合适的任何方式向前提交。根据每个人都有的技术,这只是一个选项! :)

答案 1 :(得分:-2)

当用户提交时,表单数据将被发送到action =&#34;&#34;您定义的页面。

在该页面中,再次运行select查询,它将为您提供当前值。 然后运行更新查询。

在日志中,您可以输出当前值(来自之前选择的)和新值(来自表单中的更新字段)。

---在OP的评论之后添加了这个:

假设您有一个类似profile.php的页面来更新用户 用户A转到profile.php?username = A
用户B转到profile.php?username = B
然后,您可以构建选择和更新查询,并指定要更新的用户。

另一种更好,更安全的方法是设置会话cookie。然后,您可以读取该cookie以了解哪个会话,从而知道哪个用户正在使用该页面。

显然,您希望确保修改用户的人员能够这样做,但这不在您的问题范围内(用户 - 角色 - 安全管理)。

然后就没有可能混淆用户。