html - 如何从输入类型号和数据库(获取)值中减去一个值?减法后,更新查询时更新当前余额
问题描述
初学者在这里。有没有办法从数据库和输入类型号中减去一个值?减去后,点击“插入提交按钮”后,当前点数将被更新。我已经提供了更多解释的截图。先感谢您。此外,我更新了更新查询。但是没有减法发生或任何事情。
意见:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<center> <div style="margin-top:100px;">
<form action="<?php echo base_url();?>welcome/auth/form_validation" method="post">
<input type="number" placeholder="Enter Amount" name="bet" class="form-control" id="box" required>
<!-- change id's name to betAmount -->
<p>CURRENT WALLET: <a style="color:blue;"><?php echo $_SESSION['currentPoints']?></a></p>
<p class="remaining">REMAINING BALANCEE:
<a class="p-1" id="betAmountResult"></a>
</p>
<input type="submit" name="insert" id="insert" value="Insert">
</form>
</div>
<script>
$(function() {
$("#box").on("input",function() {
const betAmount = $("#box").val(),
walletAmount = <?php echo $_SESSION['currentPoints']?>, // your session data goes here
remainingAmount = walletAmount - betAmount,
enough = remainingAmount >= 0;
$("#betAmountResult").text(enough ? remainingAmount : 'Error, not enough balance');
$("#insert").prop("disabled",!enough); // disable
// $("#insert").toggle(enough); // remove
})
});
</script>
控制器:
<?php
class Auth extends MX_Controller
{
public function form_validation()
{
$this->form_validation->set_rules('bet','bet', 'required|numeric');
if($this->form_validation->run())
{
$data = array(
'bet' =>$this->input->post('bet'),
);
$this->db->insert('bettaya',$data);
$this->load->view('bet');
}
}
public function inserted()
{
$this->index();
$this->session->set_flashdata("success","Your account has been registered. You can log in now");
}
function updateData($id) {
$data = array (
'bet' => $this->input->post('bet'),
);
$this->db->where('id', $id);
$this->db->update('users', $data);
}
}
解决方案
这是您可以updateData()
在 Controller 文件中对函数进行的编辑。它需要被调用,你可以通过编辑你的 Form 标签来做到这一点:
<form action="<?php echo base_url();?>welcome/auth/updateData" method="post">
你是如何传递你的用户 ID ($id) 的?(我在你的例子中默认了 user_id = 49 )。
public function updateData($id=49) {
// load Model
$this->load->model("Auth_model);
// get currentPoints from the database ...
$query = $this->Auth_model->get_current_points($id); // user id
$current_points = $query->row(0, 'currentPoints');
$data = array (
'bet' => $this->input->post('bet'),
);
$data['remainingBalance'] = $current_points - $data['bet'];
$this->db->where('user_id', $id);
$this->db->update('users', $data);
}
// Something like this should be added to your Model file to get currentPoints
public function get_current_points($id)
{
$id = $this->db->escape($id);
$query = $this->db->query("SELECT * FROM users WHERE user_id = $id LIMIT 1");
return $query;
}
推荐阅读
- python - Python 上的正则表达式
- unit-testing - Automapper 模拟
- android - 在不克隆的情况下将 Android Studio 代码推送到 Bitbucket
- post - 对 Steam 排行榜 API 的 POST 请求总是返回 Forbidden
- ansible - 如何使用 puppet 部署存档
- flutter - 将小部件从其容器外部动画到其最终位置
- reactjs - 如何从 Mobiscroll 子组件中获取 ref 到父组件中
- c# - 我可以将 proto 反序列化为对象类型吗
- java - Java中的循环混乱模式?
- angular - 另一个应用程序使用的 Angular 库产生错误:装饰器不支持函数调用,但调用了“LoggerModule”