I have a form which has a save button as shown below:
<form method="post" id="myform" style="text-align: left;">
<div style="text-align:center;">
<button onclick="saveButton()" type="submit">Save</button>
</div>
</form>
In that form, what I want to achieve is when a user press the save button then it should check a table in the database.
The table which I want to get it checked is list_users. list_users has 5 columns:
(1) user_name (2) open (3) read_access (4) write_access (5) LastActivity
When any user login (let's user UserA) then:
read_access => 1 write_access => 1
When another user (let's say UserB) login at the same time then
UserA read_access => 1 write_access => 0 UserB read_access => 1 write_access => 1
What I want to achieve is when write_access => 0 then the user should not be allowed to save the form meaning on pressing save button
it should check write_access column in list_users table. If the value is 0 in write_access column, then the user should not be allowed to
save the form.
This is what I have tried:
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 } ?>
}
I am getting the alert message but the form is still getting saved. I am wondering what changes I should make in the code so that with the alert message the form should also not get saved.
Advertisement
Answer
One approach to solve this is using onsubmit on the form instead of onclick on the submit button
<form method="post" id="myform" style="text-align: left;" onsubmit="return saveButton()">
And on the javascript function, use 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 } ?>
}
Here is the scenario :
Know that onsubmit="return false" will cancel the form submit,
then using return saveButton() and returning false on saveButton function will also cancel the form submit