2011-07-27 13 views
6

मैं सचमुच अपने बालों को इस के साथ खींच रहा हूं और इसकी शुरुआत मेरी बाकी परियोजना में देरी कर रही है और यह वास्तव में मुझे नीचे ला रही है।गैर-वस्तु की संपत्ति प्राप्त करने का प्रयास कर रहे हैं? PHP/codeigniter

मैं डेटाबेस तालिका से लिया गया मानों का उपयोग करके पुल डाउन करने की कोशिश कर रहा हूं ताकि भविष्य में उपयोगकर्ता खींचने के लिए और विकल्प जोड़ना चाहता है, तो वे उन्हें डेटाबेस में तालिका में जोड़ सकते हैं।

मैं एमवीसी डिजाइन पैटर्न का उपयोग कर कोडिनेटर प्लेटफ़ॉर्म (PHP) का उपयोग कर रहा हूं।

एक PHP त्रुटि गंभीरता का सामना करना पड़ा था:

यहाँ मैं त्रुटि संदेश आ रहा है सूचना संदेश: विचारों/submit.php लाइन संख्या:: गैर वस्तु फ़ाइल नाम की संपत्ति प्राप्त करने के लिए कोशिश कर रहा है 139

मेरा मॉडल फ़ंक्शन यह है जो "कर्मचारी" नामक तालिका से पंक्तियों को पुनर्प्राप्त करता है। यह ठीक काम करता है!

function retrieve_values() 
{ 
    $query = $this->db->get('staff'); 

    if ($query->num_rows() > 0) 
    { 
     //true if there are rows in the table 
     return $query->result_array(); //returns an object of data 
    } 

    return false; 
} 

इस नियंत्रक समारोह जो पैरामीटर प्राप्त करता है और मेरे विचार को पास कर देता है। यह ठीक काम करता है! मैं एक foreach उपयोग कर रहा हूँ और फिर विकल्प में सरणी के उदाहरण गूंज:

public function displayform() 
{ 

    //Checks if a user is logged in, if they are not they get redirected - 
    if ($this->session->userdata('name') == FALSE || $this->session->userdata('access_level') == FALSE) 
    { 
     redirect ('site/index');// to home page 
    } 

    //Stores the returned array in instance called "formdata" which will be passed to the view to be used in pulldown menu 
    $page['formdata']=$this->submit_model->retrieve_values(); 

    //This loads the form 
    //Instance of "page" in array "page" specifies the file name of the page to load 
    $page['page'] = 'submit'; 
    $this->load->view('template', $page); 

    return; 
} 

यह दृश्य जो समस्या का कारण है का हिस्सा है।

<select> 
    <?php foreach ($formdata as $row) { ?> 
     <option value="<?php echo $row->staff_id; ?>"><?php echo $row->name; ?></option> 
    <?php } ?> 
</select> 

चर $formdata की printr() से पता चलता है कि यह इन मूल्यों में शामिल हैं:

Array (
    [0] => Array (
     [staff_id] => 1 
     [name] => Cardiology Nurse 
    ) 
    [1] => Array (
     [staff_id] => 2 
     [name] => Radiology Nurse 
    ) 
    [2] => Array (
     [staff_id] => 3 
     [name] => Scrub Nurse 
    ) 
    [3] => Array (
     [staff_id] => 4 
     [name] => Circulating Nurse 
    ) 
    [4] => Array (
     [staff_id] => 5 
     [name] => Nurse 
    ) 
    [5] => Array (
     [staff_id] => 6 
     [name] => Training Nurse 
    ) 
    [6] => Array (
     [staff_id] => 7 
     [name] => Physiologist 
    ) 
    [7] => Array (
     [staff_id] => 8 
     [name] => Radiographer 
    ) 
    [8] => Array (
     [staff_id] => 9 
     [name] => Consultant 
    ) 
    [9] => Array (
     [staff_id] => 10 
     [name] => Radiologist 
    ) 
    [10] => Array (
     [staff_id] => 11 
     [name] => Cardiologist 
    ) 
    [11] => Array (
     [staff_id] => 12 
     [name] => Anaethestist 
    ) 
    [12] => Array (
     [staff_id] => 13 
     [name] => Non-medical Staff 
    ) 
) 
+0

आप उपयोग कर रहे हैं शामिल हैं/वस्तुओं स्टोर करने के लिए सत्र के साथ की आवश्यकता है? मेरा मानना ​​है कि यदि आप किसी ऑब्जेक्ट को किसी सत्र में संग्रहीत करते हैं तो आपको सत्र शुरू करने से पहले ऑब्जेक्ट की क्लास परिभाषा वाली फ़ाइल को शामिल/आवश्यक करना होगा। – James

उत्तर

15

formdata सरणियों की एक सरणी, नहीं वस्तुओं, तो बस अपने दृश्य में बदल रहा है:

<option value="<?php echo $row->staff_id; ?>"><?php echo $row->name; ?></option> 
// to 
<option value="<?php echo $row['staff_id']; ?>"><?php echo $row['name']; ?></option> 
+1

थंक्यु थंक्यौ थंक्यौ! मैं अपने retun परिणामों के बारे में और अधिक सावधान रहूंगा – sqlmole

2

आप result_array का उपयोग किया है, जिसका अर्थ है आप, सरणियों की एक सरणी प्राप्त करने के लिए जा रहे हैं की एक सरणी के बजाय वस्तुओं। आप अपने दृश्य संशोधित कर सकते हैं या तो इस के लिए:

<option value="<?php echo $row['staff_id']; ?>"> 
    <?php echo $row['name']; ?> 
</option> 

बजाय

<option value="<?php echo $row->staff_id; ?>"> 
    <?php echo $row->name; ?> 
</option> 

या आप मॉडल में $query->result() को $query->result_array() बदल सकते हैं।

+0

धन्यवाद! बहुत सारे सर !!!!! आईटी वर्क्स: डी – sqlmole

संबंधित मुद्दे

 संबंधित मुद्दे