Welcome Guest, Not a member yet? Register   Sign In
Message: Illegal string offset
#1

[eluser]Publisher1[/eluser]
Hi

I want to rebuilt a normal array, and i dont see my mistake. Can somebody help me?

When i want do add a subarray with index ['id_object'], then it generates the error.

Thank you in advice!

Model:
Code:
public function getObjects($i_user_id) {
    
        $this->db->select('objects.id      as id_object,
                            objects.id_user     as id_user,
                            objects.id_object_pattern     as id_object_pattern_table_objects,
                            objects.name     as name_object,
                            objects.date_add    as date_add_object,
                            objects.date_modified   as date_modified_object,
                            object_patterns.name   as name_object_pattern,
                            object_patterns.id_user      as id_user_belongs_to_this_pattern,
                            object_patterns_fielddefs.id    as id_fielddef,
                            object_patterns_fielddefs.name    as name_fielddef,
                            object_patterns_fielddefs.lang    as lang_fielddef,
                            object_patterns_fielddefs.`type`   as type_fielddef,
                            object_patterns_fielddefs_values.value      as value_fielddef');
        
        $this->db->from('objects');
        $this->db->join('object_patterns',                      'objects.id_object_pattern      = object_patterns.id',                                      'LEFT');
        $this->db->join('object_patterns_fielddefs',            'object_patterns.id             = object_patterns_fielddefs.id_pattern',                    'LEFT');
        $this->db->join('object_patterns_fielddefs_values',     'object_patterns_fielddefs.id   = object_patterns_fielddefs_values.id_object_fielddef',     'LEFT');
        
        $this->db->where('objects.id_user = ' . $i_user_id);
        $s_query = $this->db->get();
        $a_result = $s_query->result();
        

        foreach($a_result as $i_key => $o_attributes) {
                var_dump($o_attributes->value_fielddef);

            if($o_attributes->value_fielddef != null) {
                $a_result_rebuilt['id_object_pattern'] = $o_attributes->id_object_pattern_table_objects;
                // $a_result_rebuilt['id_object_pattern']['id_object'] = $o_attributes->id_object;
                $a_result_rebuilt['id_object_pattern']['id_object'] = $o_attributes->id_object;
                // $a_result_rebuilt['id_object_pattern']['id_object']['name_object'] = $o_attributes->name_object;
                // $a_result_rebuilt['id_object_pattern']['id_object']['name_object_pattern'] = $o_attributes->name_object_pattern;
                // $a_result_rebuilt['id_object_pattern']['id_object']['fields']['name_fielddef'] = $o_attributes->name_fielddef;
                // $a_result_rebuilt['id_object_pattern']['id_object']['fields']['lang_fielddef'] = $o_attributes->lang_fielddef;
                // $a_result_rebuilt['id_object_pattern']['id_object']['fields']['type_fielddef'] = $o_attributes->type_fielddef;
                // $a_result_rebuilt['id_object_pattern']['id_object']['fields']['value_fielddef'] = $o_attributes->value_fielddef;
            
            }
        }
        
        return $a_result_rebuilt;
    }

View
Code:
// Show user objects, or message for no objects inserted jet
        if(!empty($objects)) {
            $this->myfunctions->pre_print_r($objects);
        } else {
            echo 'Noch keine Objekte inseriert.';
        }

Controller
Code:
public function index() {
        if ($this->ion_auth->logged_in()) {      
            $s_actual_view  = strtolower(__CLASS__ . '_view');
            $s_actual_model = strtolower(__CLASS__ . '_model');
            
            $this->load->model($s_actual_model);
            
            $this->data['objects']              =   $this->$s_actual_model->getObjects($this->session->userdata('user_id'));
            
            $this->render_all_usernavig(strtolower(__CLASS__) . '_view', $this->data);
        } else {
            redirect('auth/login');
        }
    }

Error
Quote:A PHP Error was encountered
Severity: Warning

Message: Illegal string offset 'id_object'

Filename: models/user_objects_model.php

Line Number: 41
#2

[eluser]greedyman[/eluser]
Where is Line Number: 41 in model?
#3

[eluser]Publisher1[/eluser]
[quote author="greedyman" date="1373767680"]Where is Line Number: 41 in model?[/quote]

Hi greedyman

At this position:

Code:
$a_result_rebuilt['id_object_pattern']['id_object'] = $o_attributes->id_object;
#4

[eluser]greedyman[/eluser]
[quote author="Publisher1" date="1373788928"]
Hi greedyman

At this position:

Code:
$a_result_rebuilt['id_object_pattern']['id_object'] = $o_attributes->id_object;
[/quote]

You should run sql query in phpmyadmin or something to ensure that it runable, and then you copy paste it into php code. Your code is very hard to read.
#5

[eluser]Publisher1[/eluser]
[quote author="greedyman" date="1373796130"][quote author="Publisher1" date="1373788928"]
Hi greedyman

At this position:

Code:
$a_result_rebuilt['id_object_pattern']['id_object'] = $o_attributes->id_object;
[/quote]

You should run sql query in phpmyadmin or something to ensure that it runable, and then you copy paste it into php code. Your code is very hard to read.[/quote]

I do this every time before i paste the sql into my models.

I had rebuilt my array in the fault way, i have do this like:

Code:
foreach($a_result as $i_key => $o_attributes) {
            if($o_attributes->value_fielddef != null) {
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects] =  
                array('object_pattern_id'                         =>  $o_attributes->id_object_pattern_table_objects,
                     'object_pattern_name'                       =>  $o_attributes->name_object_pattern,
                     'Object ID: '. $o_attributes->id_object     =>  
                     array('object_attributes'   =>  array('id_object'          =>  $o_attributes->id_object,
                                                           'object_fields'      =>  
                                                           array('name_object'         => $o_attributes->name_object,
                                                                  'name_object_pattern' => $o_attributes->name_object_pattern,
                                                                  'fielddef_name'       => $o_attributes->name_fielddef,
                                                                  'fielddef_lang'       => $o_attributes->lang_fielddef,
                                                                  'fielddef_type'       => $o_attributes->type_fielddef,
                                                                  'fielddef_value'      => $o_attributes->value_fielddef
                                                                 )
                                                        )
                         )
                    );

            }
        }

So the error dissapears.
#6

[eluser]Cgull[/eluser]
Try this maybe:
$a_result_rebuilt['id_object_pattern']['id_object'] = array();
$a_result_rebuilt['id_object_pattern']['id_object'][] = $o_attributes->id_object;
#7

[eluser]Publisher1[/eluser]
[quote author="Cgull" date="1373804591"]Try this maybe:
$a_result_rebuilt['id_object_pattern']['id_object'] = array();
$a_result_rebuilt['id_object_pattern']['id_object'][] = $o_attributes->id_object;[/quote]

Thanks for the suggestion, but this also generates the error.

I don't knot why, i rebuilt the key generatings in my for each from new. Now the code works, whitout giving me the illegal error.

Code:
foreach($a_result as $i_key => $o_attributes) {
            if($o_attributes->value_fielddef != null) {
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['attributes_pattern']['pattern_id']      = $o_attributes->id_object_pattern_table_objects;
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['attributes_pattern']['pattern_name']    = $o_attributes->name_object_pattern;
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['objects']['Object ID: ' . $o_attributes->id_object]['object_id']        = $o_attributes->id_object;
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['objects']['Object ID: ' . $o_attributes->id_object]['object_name']      = $o_attributes->name_object;
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['objects']['Object ID: ' . $o_attributes->id_object]['object_attributes']['Fielddef ID: ' . $o_attributes->id_fielddef]['name']      = $o_attributes->name_fielddef;
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['objects']['Object ID: ' . $o_attributes->id_object]['object_attributes']['Fielddef ID: ' . $o_attributes->id_fielddef]['lang']      = $o_attributes->lang_fielddef;
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['objects']['Object ID: ' . $o_attributes->id_object]['object_attributes']['Fielddef ID: ' . $o_attributes->id_fielddef]['type']      = $o_attributes->type_fielddef;
                $a_result_rebuilt['Pattern ID: ' . $o_attributes->id_object_pattern_table_objects]['objects']['Object ID: ' . $o_attributes->id_object]['object_attributes']['Fielddef ID: ' . $o_attributes->id_fielddef]['value']     = $o_attributes->value_fielddef;
            }
        }

I really don't know why this works, and the first code didn't worked.

(Its not a small code, i am sorry for that ;-))

So it's solved!

Thanks anyway!
#8

[eluser]Cgull[/eluser]
Well, happy you could make it work Smile




Theme © iAndrew 2016 - Forum software by © MyBB