怎么修改指定用户的余额
前端:
<div class="layui-card">
<div class="layui-card-header">
下级用户
<!-- <a class="layui-icon" href="/user"><small>更多</small></a> -->
</div>
<form class="layui-form" id="user_money">
<div class="layui-card-body layui-text">
<table class="layui-table">
<thead>
<tr>
<th>用户id</th>
<th>用户名</th>
<th>余额</th>
<th>注册时间</th>
<th>多域名权限</th>
<th>操作</th>
<!-- <th>操作</th> -->
</thead>
<tbody>
{volist name="userlist" id="v"}
<tr>
<td>{$v.id}</td>
<td>{$v.email}</td>
<td>{$v.money}</td>
<td>{$v.create_time|date="Y-m-d h:s"}</td>
<td class="td-manage">
<span href="javascript:;" title="到期时间:{$v.many_lstime|date="Y-m-d"}">
{$v.many==0 ? '未开通':'<span class="x-red">已开通</span>'}
</span>
</td>
<td class="td-manage">
<input type="text" name="money" lay-verify="required" placeholder="{$v.money}" autocomplete="off" class="layui-input" style="display: inline;width: 20%;">
<button class="ml_btn" lay-filter="user_money">修改</button>
</td>
</tr>
{/volist}
</tbody>
</table>
<div class="page">
<a href="{:url('daili/index/user_list')}" class="layui-laypage-next" data-page="2">更多»</a>
</div>
</div>
</form>
</div>
这是自己写的控制器,没效果不知道哪里的问题
//修改会员余额
public function user_money()
{
$uid = Session::get('daili');
$post = input('post.');
$user_id = $post['user_id'];
$data = [
'uid'=>$user_id,
'money'=>$post['money']
];
$sql = daili::where('id',$uid)->update($data);
if($sql){
return json(jsoncode(1,'修改成功'));
}else{
return json(jsoncode(-1,'修改失败'));
}
}
//监听提交-修改用户余额
form.on('submit(user_money)', function(data){
//发异步,把数据提交给php
var form = $("#user_money").serialize();
$.ajax({
url:'{:url("daili/index/user_money")}',
type:'post',
data:form,
dataType:'json',
success:function(data){
if(data.code == 1){
layer.alert(data.msg, {icon: 6},function () {
//刷新当前页面
location.reload();
});
return false;
}else{
layer.msg(data.msg,{icon:5,time:2000});
}
}
});
return false;
});
根据你提供的代码,修改指定用户的余额的代码应该如下:
public function user_money()
{
$post = input('post.');
$user_id = $post['user_id'];
$data = [
'money' => $post['money']
];
$sql = daili::where('id', $user_id)->update($data);
if($sql){
return json(jsoncode(1,'修改成功'));
} else {
return json(jsoncode(-1,'修改失败'));
}
}
在前端部分,你需要修改以下内容:
在每个需要修改余额的用户前面添加一个隐藏的 input 元素,用于存储用户的 id 值:
<input type="hidden" name="user_id" value="{$v.id}">
修改表单的 id 值,使其与控制器中的函数名一致:
<form class="layui-form" id="user_money">
这样,在提交表单的时候,会将用户 id 和新余额一起提交到控制器中,从而完成余额的修改。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据前端代码可以看到,需要修改的用户余额信息通过表格显示,并提供了一个修改按钮。点击修改按钮后,会通过AJAX向服务器发送一个POST请求,请求数据会包含要修改的用户ID和余额。因此,我们需要在控制器中处理这个请求。
首先,我们需要在控制器中引入要操作的模型文件daili.php。这里假设我们的模型文件中定义的表名为“user”。
use app\model\daili;
然后,在控制器的user_money()
方法中加入如下代码:
//修改会员余额
public function user_money()
{
$user_id = input('post.user_id'); //获取待修改的用户ID
$money = input('post.money'); //获取要修改的金额
$result = daili::where('id', $user_id)->setField('money', $money);
if ($result !== false) {
return json(['code' => 1, 'msg' => '修改成功']);
} else {
return json(['code' => -1, 'msg' => '修改失败']);
}
}
这里使用了ThinkPHP自带的数据库操作方法setField()
来更新用户余额信息。根据文档说明,setField()
方法会将指定字段更新为指定值,并返回受影响的行数。如果更新成功,返回值应该是一个正整数,否则应该是false。
注意,返回JSON数据的格式应该是{'code':1,'msg':'修改成功'}
,因为前端代码需要根据这个返回值来进行提示。
最后,在前端代码中,给修改按钮添加一个自定义属性data-userid
,用于保存待修改的用户ID。修改按钮的HTML代码应该如下所示:
<button class="ml_btn" lay-filter="user_money" data-userid="{$v.id}">修改</button>
然后,在AJAX请求中,获取该属性的值,并将其作为POST请求数据的user_id
字段:
var user_id = $(this).data('userid');
$.ajax({
url: '{:url("daili/index/user_money")}',
type: 'post',
data: {user_id: user_id, money: money},
dataType: 'json',
success: function(data) {
//… 省略其他代码 …
}
});
这样,就完成了修改用户余额的操作。完整的控制器代码如下所示:
<?php
namespace app\controller;
use think\facade\Session;
use app\model\daili;
class Index extends Base
{
//其他代码省略
//修改会员余额
public function user_money()
{
$user_id = input('post.user_id'); //获取待修改的用户ID
$money = input('post.money'); //获取要修改的金额
$result = daili::where('id', $user_id)->setField('money', $money);
if ($result !== false) {
return json(['code' => 1, 'msg' => '修改成功']);
} else {
return json(['code' => -1, 'msg' => '修改失败']);
}
}
}
如果我的回答解决了您的问题,请采纳!