【发布时间】:2016-09-19 02:06:31
【问题描述】:
我有一个用 php 制作的表格,现在我想让用户使用下拉菜单(选择/选项)更改每个用户的访问级别。例如:
一旦用户按下常规,它就会将请求发送到 ajax,立即更改/更新数据库。
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);
?>
用户表没有更新,还有其他解决方案吗?或者任何人都可以看到问题?在此先感谢,我对 AJAX 还很陌生,因此感谢所有帮助:)
【问题讨论】:
-
@daremachine 它没有更新大声笑:(
-
ajax 成功了吗?以及您在服务器端看到的内容,例如 var_dump($_POST);死;
-
一定要用ajax吗?
-
@IvanBarayev 不,我没有
-
您需要检查错误。如果你的 ajax 是用状态 200 发送的,那么你需要检查 php 端,比如 $mysqli 是好的,$id,$level 是好的。我建议您包装您的查询以尝试捕获块并处理异常,问题可能出在数据库
标签: php jquery html ajax select