2011-03-03 38 views
19

我正在嘗試更新表單,即要檢索所選特定ID的數據,並填寫表單,以便可用於更新。試圖獲取非對象的屬性 - CodeIgniter

當我點擊的具體條目(在我的情況下產品)的編輯,就帶我到edit_product_view,但發生的錯誤「試圖獲得非對象的屬性」對於每一個我在set_values使用變量的表單元素。

使用print_r,我得到正確的關聯數組,所以它正確傳遞。我的edit_product_view的摘錄

<h2><?php echo $heading; ?></h2> 
<hr> 
<table id="newproduct"> 
<?php echo form_open('products/edit/'.$product->id); ?> 
<tr> 
    <td class="label"><?php echo form_label('Name:');?></td> 
    <td><?php echo form_input('prodname', set_value('prodname', $product->prodname));?></td> 
</tr> 
<tr> 
    <td class="label"><?php echo form_label('Product Type:');?></td> 
    <td><?php echo form_dropdown('ptname_fk', $product_types, set_value('ptname_fk', $product->ptname_fk));?></td> 
</tr> 

$product是數組保存所有鍵值對,但我不能填寫表格,出於某種原因。

預先感謝您!

+0

我可能一直在沉重和錯誤的問題,讓我知道。 – Orbit 2011-03-03 00:23:50

回答

43

要訪問的元素的陣列中,使用數組表示法:$product['prodname']

$product->prodname是對象表示法,它只能用於訪問對象的屬性和方法。從(在控制器)

$query = $this->db->query("YOUR QUERY"); 

然後,單排:

+0

不起作用。這是print_r輸出。 「陣列 ( [0] => stdClass的對象 ( [ID] => 1 [PRODNAME] =>烤Fillo [base_unit] => 500.00 [retail_price] => 50.00 [alert_quantity] => 0.00 [ptname_fk] => 1 [pcname_fk] => 1 [wname_fk] => 1 [uname_fk] => 1 [UNAME] =>克 [pcname] => Fillo [ptname] =>成品 [wname] =>成品 ) )' – 2011-03-03 10:51:08

+6

找到工作了d!謝謝! 我引用 $ product ['0'] - > prodname; – 2011-03-03 11:28:54

+1

啊,是的,這基於數組轉儲是有意義的。 – Orbit 2011-03-03 14:03:37

6

來獲取值

$query1 = $query->row(); 
$data['product'] = $query1; 

在視圖中,您可以使用自己的代碼(上面的代碼)

3

就我而言,我從一個XML文件循環了一系列對象,但其中一些實例顯然不是導致錯誤的對象。在處理之前檢查對象是否爲空解決了問題。

換句話說,沒有檢查,如果對象是空的,腳本會出錯誤與錯誤的任何空對象「試圖獲得非對象的財產」

例如

if (!empty($this->xml_data->thing1->thing2)) 

{ 

foreach ($this->xml_data->thing1->thing2 as $thing) 

{ 

} 

} 
相關問題