I have a table that i made in php, now i want to let the user to change the access level of each user, using a dropdown menu (select/option). For example:
Once the user presses general it sends the request to ajax, changing/updating the database instantly.
admin.php
<?php
//database connection
include("db_conn.php");
include("session.php");
session_start();
$username = $_SESSION['logged_in']; //set the current user
$query = "SELECT `ID`, `Username`,`Name`, `DOB`, `Email`, `Access` FROM `users`";
$result = $mysqli->query($query);
$row=$result->fetch_array(MYSQLI_ASSOC);
function show_table($myData)
{
echo "<table border=1 id='staff_table'>
<tr>
<th>ID</th>
<th>Username</th>
<th>Name</th>
<th>DOB</th>
<th>Email</th>
<th>Access</th>
</tr>";
while ($row = $myData->fetch_array(MYSQLI_ASSOC))
{
$access= $row['Access'];
$access2;
$access_data = 1; //admin = level 1
$access_data2 = 2; //general = 2
if($access == 1)
{
$access = "Admin";
$access2 = "General";
$access_data = 1; //change when the page loads (depending what access level they are)
$access_data2 = 2; //change when the page loads
}
else
{
$access = "General";
$access2 = "Admin";
$access_data = 2; //the reason i have these values is they
$access_data2 = 1; //change depending on what the user's access level is once the page loads
}
echo "<tr>";
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['Username'] . "</td>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['DOB'] . "</td>";
echo "<td>" . $row['Email'] . "</td>";
echo "<td id='" . $row['ID'] . "'>";
echo "<select name='admin_menu' class='admin_menu'>";
echo '<option class="admin_option" value="' . $access_data2. '">' . $access . '</option>';
echo '<option class="admin_option" value="' . $access_data. '">' . $access2 . '</option>';
echo "</select>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
}
?>
<html>
<head>
<title>Admin Table</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('.admin_menu').change(function() {
id = $(this).parent().attr('id');
level = $('.admin_menu option:selected').val();
var request = $.ajax({
url: "changeLevel.php",
method: "POST",
data: { id : id, level: level },
dataType: "html"
});
request.done(function() {
//location.reload(); //reload page (if it actually updates)
});
});
});
</script>
</head>
<body>
<h1>Admin Table</h1>
<?php show_table($result); ?>
</body>
</html>
changeLevel.php
<?php
include("db_conn.php");
$id = $_POST['id'];
$level = $_POST['level'];
$queryUpdate="UPDATE users SET Access='$level' WHERE ID='$id'";
$update = $mysqli->query($queryUpdate);
?>
The user table is not updating, is there any other solution to this? Or can anyone see the problem? Thanks in advance, I'm pretty new to AJAX so all help is appreciated :)
