CI 묻고 답하기

제목 기초적인거 질문 드릴게요 ㅠㅠ..
글쓴이 jackie 작성시각 2016/03/09 21:06:29
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 12902   RSS
             Table: feeds_category Columns:
category_id int(11) AI PK
category_name

varchar(45)

             Table: feeds_list Columns:

feed_id int(10) AI PK 
feed_name varchar(255)
feed_title varchar(255)
feed_url varchar(255)
feed_region varchar(255)
feed_length int(5)
feed_notes text
feed_category varchar(45)

db로는 이렇게 둘을 가지고있구요,

category_id별로 name을 보이고

category_id와 feed_category가 같은 feed_list->feed_title을 그 하위에 <li>로 넣으려고 하는데요

--------------

ex) 경제

     -매일경제

     -내일경제

     -미래경제

     사회

      -다음사회

----------------

 

해서 foreach 두번써서 하려니 에러가나서요.

<ul class="list-group">    

<?php

     foreach ($feeds_category as $feeds_category) {           

?>               

<?=$feeds_category->category_name?>

<?php

foreach ($feeds_list as $feeds_list){                            

 if($feeds_list->feed_category==$feeds_category->category_id){                                  

?>                                      

<li><a href="#"><?=$feeds_list->feed_title?></a></li>                                

 <?php                    

}                        

 }                    

 ?>  

 </ul> 

<?php    

}

?>      

===================================

이렇게 하면 첫번째 category_id 는 feeds_list가 잘표현되는데,

두번째에는  Trying to get property of non-object

그다음부터는  Invalid argument supplied for foreach()

라는 에러가 떠서요.

===

모델이고

function gets(){      return $this->db->query("SELECT * FROM feeds_list")->result();    }

function gets(){      return $this->db->query("SELECT * FROM feeds_category")->result();    }

===

컨트롤러입니다

function __construct(){        parent::__construct();        $this->load->database();        $this->load->model('feeds_list_model');        $this->load->model('feeds_category_model');    }

    public function index()    {        $this->_head();        $this->load->view('admin/main');        $this->load->view('admin/footer');    }

    function _head(){        $this->load->view('admin/head');        $feeds_list = $this->feeds_list_model->gets();        $feeds_category = $this->feeds_category_model->gets();        $this->load->view('admin/feeds_list',array('feeds_list'=>$feeds_list,'feeds_category'=>$feeds_category));    }

===

 

 다음글 이게.. CI문제인지, 아님 일반 Mysql 문제인지.... (5)
 이전글 write 페이지와 update페이지를 코드값으로 구분... (1)

댓글

한대승(불의회상) / 2016/03/10 08:00:28 / 추천 0

아래처럼 수정해서 테스트 해보세요.

<?php
foreach ($feeds_list as $feeds){                            

 if($feeds->feed_category==$feeds_category->category_id){                                  

?>                                      

<li><a href="#"><?=$feeds->feed_title?></a></li>                                

 <?php                    

}                        

 }                    

 ?>  

 </ul> 

<?php    

}

?> 

 

Luj / 2016/03/10 10:07:50 / 추천 0

category_id(11)와 feed_category(45) <--- 데이터 타입 맞춰주는게 좋을 것 같구요(category_id 받을 목적이시면)

굳이 View 페이지에서 뽑아야하는 이유 없으면,

$result = $this->db->query("SELECT * FROM feeds_list");

foreach($result => $key as $val){

  $result[$key]['media'] = array();

  $result[$key]['media'] = $this->db->query("SELECT * FROM feeds_category where feed_category = ".$val['category_id']);

// * 대신에 feed_title 만 해서 써도 될 듯..?  

}

이러면 $result 에 [n] - category_id,

                            - category_name,

                            - (array)media

 이렇게 생긴 배열이 생기고, View에서는 $result for 문으로 돌리고 그 안의 feedslist 를 for 문을 돌려서 열어주면 될듯 허네요...ㅎ

 

jackie / 2016/03/11 07:27:55 / 추천 0
두분다 정말 감사합니다!