1

関数を作成しましたが、一部を除いて機能しています。

//Find current upload total value   
$this->EE->db->select('upload_total');
$upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id));
return $upload_total->result();

// If upload total is more than 0       
if($upload_total > 0) {
    $new_total = $upload_total + $my_data['upload_total'];  
    $my_data['upload_total'] = $new_total;
}

コードのこの特定の部分に問題があるかどうか、誰か教えてもらえますか?

これが完全な機能です。拡張機能で実行されます。拡張機能は機能していますが、上記のコードが機能していないようです。

私は基本的にデータベースで値を見つけようとしています。値が複数ある場合は、値を別の値に追加します。

function cartthrob_on_authorize()
{
    foreach ($this->EE->cartthrob->cart->items() as $item) { 

        // Create array to store member id and purchased upload slots
        $my_data = array(
            'member_id' => $this->EE->session->userdata('member_id'),
            'upload_total' => $item->item_options('fees'),
        );

        // Store member id in variable
        $member_id = $my_data['member_id'];  

        // Query table to check if there is record with member id exists
        $query = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id)); 

        // If query returns more than 0 update record 
        if($query->num_rows() > 0) {

            //Find current upload total value   
            $this->EE->db->select('upload_total');
            $upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id));

            // If upload total is more than 0       
            if($upload_total > 0) {

                $new_total = $upload_total + $my_data['upload_total'];  

                $my_data['upload_total'] = $new_total;

            }   

            return $upload_total->result();

            $this->EE->db->where('member_id', $member_id);
            $this->EE->db->update('exp_competition_purchase_upload_total', $my_data);

        // If query returns 0 insert new record         
        } else {

            $this->EE->db->insert('exp_competition_purchase_upload_total', $my_data);

        }
    }
}
4

3 に答える 3

0

クエリの結果は整数ではなく、オブジェクトです

このようにしてみてください。

//Find current upload total value   
$this->EE->db->select('upload_total');
$upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id));

$result = $upload_total->result();

// If upload total is more than 0       
if($upload_total->num_rows() > 0) {
    $my_data['upload_total'] += $result->upload_total;
}

return $my_data;

ところで、あなたが何をしたいのかわからないので、修正しました!

于 2013-05-15T13:46:12.833 に答える
0

ここに解決策があります

$this->EE->db->select('upload_total');
$upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total',     array('member_id' => $member_id));

// If upload total is more than 0       
if($upload_total->num_rows() > 0) {
    $result = $upload_total->row_array();
    $new_total = $result['upload_total'] + $my_data['upload_total'];  
    $my_data['upload_total'] = $new_total;
}
return $my_data;

それを試してください。DBが返すオブジェクトをintとして使用しようとしていたためです。

于 2013-05-15T13:41:52.803 に答える