【问题标题】:check a table in database when a form is saved in php当表单保存在php中时检查数据库中的表
【发布时间】:2020-06-24 02:44:39
【问题描述】:

我有一个带有保存按钮的表单,如下所示:

<form method="post" id="myform" style="text-align: left;">
<div style="text-align:center;">
    <button onclick="saveButton()" type="submit">Save</button>
</div> 
</form>

在该表单中,我想要实现的是当用户按下保存按钮时,它应该检查数据库中的表。

我要检查的表是list_userslist_users 有 5 列:

(1) user_name
(2) open 
(3) read_access
(4) write_access  
(5) LastActivity

当任何用户登录(let's user UserA) 时:

read_access => 1
write_access => 1

当另一个用户(let's say UserB)同时登录时

UserA
read_access => 1
write_access => 0

UserB
read_access => 1
write_access => 1

我想要实现的是当write_access =&gt; 0 那么用户不应该被允许在按下保存按钮时保存表单含义 它应该检查list_users 表中的write_access 列。如果write_access 列中的值为 0,则不应允许用户 保存表单。

这是我尝试过的:

function saveButton(e) {
    <?php
    $stmt = $connect->prepare("SELECT write_access FROM list_users WHERE user_name=?");
    $stmt->bind_param('s', $_SESSION['user_name']);
    $stmt->execute();
    $result2 = $stmt->get_result();
    $write_access = $result2->fetch_object();
    if($write_access->write_access != 1) { ?>
    alert('You cannot save the form');
    e.preventDefault();
    <?php } ?>
}

我收到了警报消息,但表单仍在保存中。我想知道我应该对代码进行哪些更改,以便with the alert message the form should also not get saved

【问题讨论】:

  • 保存(插入/更新)查询在哪里?另外,您的意思是保持警惕,表格不应保存在问题的最后一行?
  • 是的,请注意,表单不应保存在我的问题的最后一行。
  • 警报后尝试return false
  • 我在收到警报后尝试了return false,但表单仍在保存中。
  • 你的存档查询在哪里?

标签: javascript php forms


【解决方案1】:

解决此问题的一种方法是在表单上使用onsubmit,而不是在提交按钮上使用onclick

<form method="post" id="myform" style="text-align: left;" onsubmit="return saveButton()">

在javascript函数上,使用return false

function saveButton() { // remove e parameter
    <?php
    $stmt = $connect->prepare("SELECT write_access FROM list_users WHERE user_name=?");
    $stmt->bind_param('s', $_SESSION['user_name']);
    $stmt->execute();
    $result2 = $stmt->get_result();
    $write_access = $result2->fetch_object();
    if($write_access->write_access != 1) { ?>
    alert('You cannot save the form');
    return false; // instead of e.preventDefault()
    <?php } ?>
}

这是场景:

知道onsubmit="return false"会取消表单提交,

然后使用return saveButton() 并在saveButton 函数上返回false 也会取消表单提交

【讨论】:

  • @lllya 这种方法有一点点错误。我想要实现的是单击保存按钮,它应该检查list_users 表中的write_access 列。如果write_access =&gt; 0 则不应保存表单。
  • @llya 采用您的方法,我必须刷新页面才能使其正常工作。
  • 另一种方法是使用 ajax 实时检查write_access 权限
  • 目前的做法,userB登录后必须刷新页面
  • 因为alert('You cannot save the form');return false;userB登录之前打印
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多