CI 묻고 답하기

제목 새글 알림 질문드립니다
카테고리 CI 2, 3
글쓴이 yumin 작성시각 2019/04/01 14:45:14
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 13223   RSS

현재 뷰쪽에서 foreach반복문 돌려서 글리스트를 불러올떄 같이 새글알림을 구현을 하고 동작하는 코드는 했습니다

view 정상적인 동작 확인

foreach ($list as $lt) {
   $boardtime = $lt->border_date;
   if (time() - strtotime($boardtime) <= 60 * 60 * 24 * 1) {
      $class = 'new';
      $img = "NEW";
   } else {
      $class = 'ad';
      $img = "Article";
   }
}

 

이것을 컨트롤러에서 반복문돌려서 배열담아서 받는것이 옳은것인지 봐주시면 감사하겠습니다.

controller

동작안됨 에러

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: controllers/Welcome.php

Line Number: 57

Backtrace:

File: /home/phantom/html/CI/application/controllers/Welcome.phpLine: 57Function: _error_handler

File: /home/phantom/html/CI/application/controllers/Welcome.phpLine: 22Function: index

File: /home/phantom/html/CI/index.phpLine: 315Function: require_once

$data['list'] = $this->board_m->get_list();

foreach ($data as $lt) {
   $boardtime = $lt->border_date;
   if (time() - strtotime($boardtime) <= 60 * 60 * 24 * 1) {
      $_data = array(
      $class = 'new',
      $img = "NEW",
   );
   } else {
      $_data = array(
         $class = 'ad',
         $img = "Article",);
   }
}
$this->load->view('index', $data, $_data);
 다음글 뷰단에서 배열값 가져오기 (3)
 이전글 jQuery 를 사용하고자 합니다. (3)

댓글

kaido / 2019/04/01 14:56:02 / 추천 0

리턴한 값이 오브젝트가 아닌것 같습니다

$boardtime = $lt->border_date;

$boardtime = $lt['border_date'];

으로 변경

코드의 생김새를 보아 의도상으로는..

foreach ($data['list'] as $lt) {
....

이런 형태가 아닐지..

배강민 / 2019/04/01 15:01:15 / 추천 0

정답은 없지만

db데이터를 또 루프돌리는건 어쩔수없는 기존의 루프가 있지 않는이상 추천하지 않습니다. 부하의 원인이 될 수도.

기존 루프가 있다면 거기에 낑긴다면 괜찮겠고요.

기존 루프가 없다면 view에서 그릴때 어차피 또 루프가 돌게 되므로 view에서 하는걸 추천합니다.

아니면, db query에서 연산해서 특정 필드로 가져오게 하고서 그를 이용해도 되겠고요.

뭐 정답은 역시 없습니다.ㅎ

 

yumin / 2019/04/01 17:13:29 / 추천 0
컨트롤러에서 배열로 만들고 
$this->load->view('index', $data, $_data);

뷰에서 호출을 이중 foreach로 돌리는것이 맞나요 ?

아니면 호출을 어떻게하는게 좋을까요