首页 > 解决方案 > 如何从输入类型号和数据库(获取)值中减去一个值?减法后,更新查询时更新当前余额

问题描述

初学者在这里。有没有办法从数据库和输入类型号中减去一个值?减去后,点击“插入提交按钮”后,当前点数将被更新。我已经提供了更多解释的截图。先感谢您。此外,我更新了更新查询。但是没有减法发生或任何事情。

带有关于我的目标的解释的图像

意见:

<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);
    }
    
    }

标签: htmlcodeigniter

解决方案


这是您可以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;
}

推荐阅读