2015-06-08 2 views
0

Я хочу, чтобы показать все записи из database..but, когда я хочу, чтобы показать записи об ошибке браузера шоу и ошибка: "Невозможно использовать объект типа StdClass как массив

PHP-ошибка была обнаружена

Серьезность: Ошибка

Сообщение: Невозможно использовать объект типа StdClass как массив

Имя файла: вид/show_designation.php

Номер строки: 53

Backtrace: "

Посмотреть

<?php print_r($designation); $i=1;foreach($designation as $desig): ?> 
            <tr> 
             <td><?php echo $i; ?></td> 

             <td><?php echo $desig['name']; ?></td> This is (LINE 53) 

             <td><a href="<?php echo base_url('index.php/designation/delete_designation/'.$desig[$i]->dkey);?>"><input type="button" value="Delete" class="btn btn-danger"/></a> 
             <td class="numeric"><a id= "<?php echo $desig[$i]->dkey; ?>" onclick="edit_designation('<?php echo $designation[$i]->dkey; ?>')" data-target="#myModal" data-toggle="modal" style="color:#ffffff;" href="#myModal"><button class="btn blue" type="button">Edit</button> 

            </tr> 
         <?php $i++;endforeach;?> 

CONTROLLER

public function get_designation() 
    { 
     $this->load->model('designation_model'); 
     $userlist=$this->designation_model->get_alldesignation_model(); 
     $data['designation']=$userlist; 
     $this->load->view('show_designation',$data); 
    }//edit_project 

Модель

public function get_alldesignation_model() 
    { 
     $query = $this->db->get('designations'); 
     $result=$query->result(); 
     return $result; 
    } 
+0

Вы пытаетесь использовать объект как массив (yey, я могу читать ошибки, но на самом деле сейчас). Поскольку возвращаемое значение является объектом, вам необходимо получить доступ к таким значениям, как вы делали бы с объектом, поэтому: '$ stdObject-> value' NOT' $ stdObject ['value'] '. Если вы хотите иметь дело с массивами, вы можете преобразовать объект в массив. [См. Здесь] (stackoverflow.com/questions/19495068/convert-stdclass-object-to-array-in-php), как это сделать. – Andrew

+0

проверить мой ответ –

ответ

1

Чтобы использовать результат запроса как массив, скажем,

$result=$query->result_array(); 

потому что результат по умолчанию возвращается в качестве объекта

+0

Спасибо @ splah58 ..:) – farkhund

+0

@farkhund Рад помочь! – splash58

1

Вы используете синтаксис массива, где вам нужен синтаксис объекта. Заменить

$desig['name'] 

с

$desig->name 

Примечание: у вас будет та же проблема, в этих строках, относящихся к $desig[$i]. Я не уверен, что вы пытаетесь сделать там, но похоже, что вы смешиваете некоторый синтаксис цикла for в своем цикле . Если я правильно понимаю, вам просто нужно отказаться от [$i] в каждом месте, где вы его используете.

+0

Да, ну, конечно ... сначала я использую для цикла, чтобы показать записи из базы данных .. но теперь я хочу изменить цикл for на цикл foreach, чтобы показать результат. – farkhund

+0

@farkhund вы пробовали эти изменения? –

0

Попробуйте

в Модель

public function get_alldesignation_model() 
    { 
     $query = $this->db->get('designations'); 
     $result=$query->result_array();//Store data as Array 
     return $result; 
    } 

в вид

<?php 
    $i=1; 
    foreach($designation as $desig) 
{ 
    ?> 

    <tr> 
     <td><?php echo $i ?></td> 
     <td><?php echo $desig['name']; ?></td> 
     <td><a href="<?php echo base_url('index.php/designation/delete_designation/'.$desig[$i]->dkey);?>"> 
       <input type="button" value="Delete" class="btn btn-danger"/> 
      </a> 
     <td class="numeric"><a id= "<?php echo $desig[$i]->dkey; ?>" onclick="edit_designation('<?php echo $designation[$i]->dkey; ?>')" data-target="#myModal" data-toggle="modal" style="color:#ffffff;" href="#myModal"><button class="btn blue" type="button">Edit</button> 

    </tr> 
    <?php 
    $i++; 
} 
?> 
Смежные вопросы