如何从PHP codeigniter中的字段中减去一个值?

时间:2015-09-02 11:46:56

标签: php codeigniter

我有一个表经销商和用户。现在每个用户都由他的经销商映射一个名为 KEY 的字段,该字段唯一地定义了经销商!现在我有一个表单,我编辑用户。如果经销商将用户余额设置为是,那么我想从经销商的余额字段中减去5欧元。以下是我的代码:

控制器检查经销商是否已将余额设置为是:

 if($this->input->post('balance') === "Yes")
         {
            $this->reseller_m->deduct();
         }

模式功能应从经销商余额中减去5:

public function deduct($balance)
{
    $this->db->set('balance', 'balance-5');
    $this->db->where('id' , $id);
    $this->db->update('reseller',$data);
}

编辑代码:

public function edit ($id = NULL)
{

     $usertype=$this->session->userdata('usertype');
    if($usertype ==="reseller")
    {

    // Fetch a user or set a new one
    if ($id) {
        $this->data['user'] = $this->user_m->get($id);
        count($this->data['user']) || $this->data['errors'][] = 'User could not be found';
    }
    else {
        $this->data['user'] = $this->user_m->get_new();
    }

    // Set up the form
    $rules = $this->user_m->rules_admin;
    $id || $rules['password']['rules'] .= '|required';
    $this->form_validation->set_rules($rules);

    // Process the form
    if ($this->form_validation->run() == TRUE) {
        $data = $this->user_m->array_from_post(array('sip_id','sip_pass','name','email', 'password','phone','status','created','balance'));
        $data['password'] = $this->user_m->hash($data['password']);



        $this->user_m->save($data, $id);


         if($this->input->post('balance') === "Yes")
         {

            $this->reseller_m->deduct();

            //echo "goimng";
         }


        redirect('reseller/user');
    }

    // Load the view
    $this->data['subview'] = 'reseller/user/edit';
    $this->load->view('reseller/_layout_main', $this->data);


}
else{
    $this->load->view('permission');
}

}

只有当他编辑自己的用户并且不应该影响其他人时,帮助我从经销商中减去5。

4 个答案:

答案 0 :(得分:2)

在您的模型中尝试此操作,其中$id是转销商的ID。

public function deduct($id)
{
    $this->db->set('balance', 'balance-5', false);
    $this->db->where('id' , $id);
    $this->db->update('reseller');
}

另外,在您的控制器中,您必须知道经销商的ID,并在调用模型功能时使用它:

 if($this->input->post('balance') === "Yes")
         {
            $this->reseller_m->deduct($id); //you must have the $id (reseller's id) value set
         }

答案 1 :(得分:1)

尝试     $this->db->set('balance', 'balance-5', FALSE);

答案 2 :(得分:1)

set()还将接受可选的第三个参数($ escape),如果设置为FALSE,将阻止数据被转义。

在集合中使用FALSE作为第三个参数

$this->db->set('balance', 'balance-5',FALSE);

此外,您未在功能中定义$id and $data并将更新更改为

$this->db->update('reseller');

所以最后你的功能将是

<强> MODLE

 public function deduct($id)
    {
        $this->db->set('balance', 'balance-5',FALSE);
        $this->db->where('id' , $id);
        $this->db->update('reseller');
    }

<强> CONTROLER

if($this->input->post('balance') === "Yes")
         {

            $this->reseller_m->deduct($id);/// pass youe id here

            //echo "goimng";
         }

答案 3 :(得分:0)

要使价值动态化,我正在使用这种方法来更新产品库存

在这里,$purchase_qty是有序项目。 $product_id是订购的产品。

$this->db->set("stock", "stock - $purchase_qty", FALSE)
        ->where('price_id', $price_id)
        ->where('product_id', $product_id)
        ->update('price_table');
  

希望这会对您有所帮助。