1

我想为客户分配一张卡,我想获得未分配的卡号。假设我有 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
4

2 回答 2

2

在第一行试试这个

$userinfo= new stdClass();
于 2013-02-27T21:21:46.307 回答
0

这条信息:

试图获取非对象的属性

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

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

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

$userinfo在控制器一开始就被定义为 String 类型:

$userinfo='';

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

$userinfo = new stdClass();

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

于 2013-02-28T09:36:45.693 回答