我有一个用PHP制作的表,现在我想让用户使用下拉菜单(select / option)更改每个用户的访问级别。例如:
一旦用户按下常规,它就会将请求发送到ajax,立即更改/更新数据库。
admin.php的
Settings → Mirror Repository
changeLevel.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>
用户表没有更新,还有其他解决方案吗?或者任何人都可以看到问题?在此先感谢,我是AJAX的新手,所以所有的帮助都值得赞赏:)
答案 0 :(得分:2)
当使用
对字段进行更改时,您可以触发表单帖子平变化=&#39; this.form.submit()&#39;
所以您的选择框可能看起来像这样
<form action='' method='post'> <select name="dropdown" onchange='this.form.submit()'> <option name="option1" value="option1">This is Option 1</option> <option name="option2" value="option2">This is Option 2</option> </select> </form>
答案 1 :(得分:1)
首先改变这一行
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 "<select name='admin_menu' class='admin_menu' id='Selectid' onchange='postlist();'>";
echo '<option class="admin_option" value="'.$access_data2.'-'.$access.'">'.$access.'</option>';
echo '<option class="admin_option" value="'.$access_data.'-'.access2 .'">'.$access2.'</option>';
echo "</select>";
在更改后的行中,我在更改onchange=""
后,将id=""
函数和"select"
添加到<option value="">
标记;
"$access_data"
和"$access"
与&#34; - &#34;一起添加爆炸的价值。
的JavaScript
<script>
function postlist() {
$.ajax({
type: 'POST',
url: 'changeLevel.php', // here posting value to your php file
data: $('#Selectid').val(), // here get the option value from select
success: function (answer) {
$("#ReportResult").html(answer) // here you can define an alert function for after success or you can use it with an id for showing the response
}
})
}
</script>
在changeLevel.php中
<?php
include("db_conn.php");
$id = $_POST['id']; //here we get value like (13-Admin);
$ids = explode("-", $id); //and here we explode the $id value (explode mean split the value with "-" or you can define "space",",","." or another sign)
$queryUpdate="UPDATE users SET Access='$ids[1]' WHERE ID='$ids[0]'";
$update = $mysqli->query($queryUpdate);
?>
PS = $ ids [0] eq到id和$ ids [1] eq到Level
您可以轻松更改此订单