动态获取列值

时间:2013-02-27 21:03:15

标签: codeigniter codeigniter-2

我想为客户分配一张卡,我想获得未分配的卡号。假设我有两类卡:1张是签证卡,2张是预付卡。我想当我分配一张主卡时,它只需显示主卡的未分配卡号和签证卡一样。这是我的代码。

型号代码

function getUnallocatedCards($object)
{
        $this->db->select('*');
        $this->db->from('cards');
        $this->db->where('catagory_id',$object->catagory_id);
        $this->db->where('status',$object->status);
        $query = $this->db->get();
         echo $this->db->last_query();
        if($query->num_rows() == 0){
            return null;
        }


        return $query->result();
}

控制器

public function AllocateCustomerCards($id='')
{
    $userinfo='';
    $contentObj='';
    $submit=$this->input->post('submit');
    if($submit=='submit')
    {    
         $userinfo->customer_id  = $this->input->post('cust_id');
         $userinfo->status_id  = $this->input->post('status_id');
         $userinfo->card_number  = $this->input->post('card_number');   
         $userinfo->card_id  = $this->input->post('card_id');
         $userinfo->print_date =$this->input->post('print_date');
         $userinfo->issue_date =$this->input->post('issue_date');   

         $this->Cards_model->saveCardAllocat($userinfo);
         echo $this->db->last_query();

    }
    $contentObj['unallocatedcards']=$this->Cards_model->getUnallocatedCards($userinfo);
    $contentObj['cardtype']=$this->Cards_model->cardCatagories();
    $contentObj['cardrequest']=$this->Cards_model->getCustomerCardRequst($id);
    $this->load->view('admin/cardsystem/allocate_card',$contentObj);    

}   

查看

<tr><td><label>Select Card No. :</label><span style="display:inline;color:red;"> *</span> </td>
<td>
    <select name="card_number" id="card_number" class="medium-input">
                            <option value=""> -- Select Card No. -- </option>
                            <?php
                            foreach($unallocatedcards as $customer)
                            {
                                echo '<option value="'.$customer->card_no.'">'.$customer->card_no.'</option>';
                            }
                            ?>
                        </select><span class="input-notification error png_bg" id="error_number_id" style="display:none;"></span>
</td>
</tr>  

但它显示以下错误

  

遇到PHP错误   严重性:通知
  消息:尝试获取非对象的属性
  文件名:models / cards_model.php
  行号:339

     

遇到PHP错误   严重性:通知
  消息:尝试获取非对象的属性
  文件名:models / cards_model.php
  行号:340

第339行:

$this->db->where('catagory_id',$object->catagory_id);

第340行:

$this->db->where('status',$object->status);

我打印查询,这是我的查询结果:

SELECT * FROM (`cards`) WHERE `catagory_id` IS NULL AND `status` IS NULL

2 个答案:

答案 0 :(得分:2)

在第一行试试这个

$userinfo= new stdClass();

答案 1 :(得分:0)

此消息:

  

尝试获取非对象的属性

表示您对不是对象的变量使用对象表示法 实际上,您可以在两行(339和340)中找到符号:$object->catagory_id$object->status。结论很明显:变量$object不是对象。

getUnallocatedCards($object)控制器中调用的函数AllocateCustomerCards$userinfo变量作为参数:

$contentObj['unallocatedcards']=$this->Cards_model->getUnallocatedCards($userinfo);

$userinfo在控制器的最开始定义为String类型:

$userinfo='';

您尝试在提交时设置$userinfo的属性,但为时已晚 最简单的解决方案是Fabio给出的解决方案:将$userinfo作为一个类启动:

$userinfo = new stdClass();

但请注意,因为当用户仅提交表单时,您正在填充$userinfo的参数。这可能会导致其他问题。