CI 묻고 답하기

제목 모델에있는 데이터베이스 배열 값 뷰로 출력하기
카테고리 CI 2, 3
글쓴이 개멧 작성시각 2017/06/26 15:45:59
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 17338   RSS
컨트롤러 입니다.
public function index()
    {
        $this->load->view('news');
    }

    /**
     * [목록테스트용]
     * @return [type] [description]
     */

    public function listPage()
    {
        $this->load->model('News/News_service', 'NewsService');

        echo '목록 사용';
        $page = 1;
        $listSize = 10;
        $oWhere = (object) [
            'searchText' => '', //제목 검색
        ];
        $orderBy = 'news.NEWS_SEQ DESC'; //최근등록순
        $oResult = $this->NewsService->getNewsListPaging($page, $listSize, $oWhere, $orderBy);

        echo "페이지{$page} 갯수 : {$oResult->totalCount}<br/>";
        echo "데이타 목록<br><br>";

        (checkEmpty($oResult->totalCount) OR checkEmpty($oResult->data)) {
            echo '데이터가 존재하지 않습니다.<br/>';
        } else {
            foreach ($oResult->data as $index => $oRow) {
                echo "No: {$oRow->NEWS_SEQ}<br/>";

                echo "제목: {$oRow->NEWS_TITLE}<br/>";
                echo "내용: {$oRow->NEWS_CNTS}<br/>";
                echo "썸네일 이미지: {$oRow->IMAGE_FILE_NM}<br/>";
                echo "등록일: {$oRow->REG_DTTM}<br/>";
                echo "<a href='/news/view/{$oRow->NEWS_SEQ}' style='text-decoration:none;'>Read more</a>";
                echo "<br/><br/>";

            }
        }

        $data = [
            'NEWS_SEQ' => $oResult -> 'NEWS_SEQ',
        ];


         $this->load->view('news', $data);

    }

 

뷰 입니다.
<body>
    <?php echo $data[0];?>
    <?php print_r($data);?>
</body>

 

이런식으로 하는게 맞나요ㅠㅠ 계속에러나고

컨트롤러에서 직접 출력말고 뷰로해야되는데 $data에 어찌줘야할지 전혀감히안오네여..

 다음글 CI 프로젝트 업로드 후 (5)
 이전글 모델안에서 다른 모델 불러 오기 (1)

댓글

kaido / 2017/06/26 15:55:17 / 추천 0
<?php echo $NEWS_SEQ; ?>

$data는 배열로 들어가지 않고, 키 값을 배열로 변환해서 넘어갑니다.

 

개멧 / 2017/06/26 16:00:23 / 추천 0

kaido

 계속해서 Message: syntax error, unexpected ''NEWS_SEQ'' (T_CONSTANT_ENCAPSED_STRING), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' 오류가 납니다 ㅠ

kaido / 2017/06/26 16:08:35 / 추천 0

foreach 데이터가 정상적으로 나오신다면 그냥 뷰에 넘겨주시면 될것 같습니다.

$this->load->view('news', $oResult);


//

<?php print_r($data); ?>





요약 하자면 컨트롤러에서 $data['a'] = 111;  이걸 뷰에 넘겨주면

echo $a;  

//결과

111

 

나오게 됩니다.

 

만일 배열일 경우에는

$data['db_data']  = $oResult;

 이러면 뷰에서는 $db_data 로 해당 값을 확인 하실 수 있습니다.

 

이부분만 유의하셔서 데이터를 맞춰 주시면 간단하게 사용 가능 합니다.

 

첨언해 드리자면, 현재 만드신 데이터 배열 구조가 헷깔리게 되어 있어서 혼란이 오신것 입니다.

컨트롤러의 data 배열인지, 모델에서 받아온 객체의 data 인지 중복이 되어서 혼란이 오는것이죠.

네이밍은 가급적 겹치지 않도록 프로그래밍 하는 것이 좋습니다.  ^^

한대승(불의회상) / 2017/06/26 16:20:37 / 추천 0
$data = [
            'NEWS_SEQ' => $oResult ->NEWS_SEQ,
        ];

이렇게 수정해서 테스트해 보세요.

개멧 / 2017/06/26 17:11:59 / 추천 0

다들 감사합니다 .!

출력이 되긴되는데요 배열로 출력하려고 row()를 사용해봤는데 잘안되네여 

여긴 컨트롤러
 if (checkEmpty($oResult->totalCount) OR checkEmpty($oResult->data)) {
            echo '데이터가 존재하지 않습니다.<br/>';
        } else {
            foreach ($oResult->data as $index => $oRow) {
                $data = [
                    'NEWS_SEQ'=>$oRow->NEWS_SEQ,
                    'NEWS_TITLE'=>$oRow->NEWS_TITLE,
                    'NEWS_CNTS'=>$oRow->NEWS_CNTS,
                    'IMAGE_FILE_NM'=>$oRow->IMAGE_FILE_NM,
                    'REG_DTTM'=>$oRow->REG_DTTM,
                ];
                /*echo "No: {$oRow->NEWS_SEQ}<br/>";
                echo "제목: {$oRow->NEWS_TITLE}<br/>";
                echo "내용: {$oRow->NEWS_CNTS}<br/>";
                echo "썸네일 이미지: {$oRow->IMAGE_FILE_NM}<br/>";
                echo "등록일: {$oRow->REG_DTTM}<br/>";
                echo "<a href='/news/view/{$oRow->NEWS_SEQ}' style='text-decoration:none;'>Read more</a>";
                echo "<br/><br/>";*/


            }
            return $this->load->view('news', $data)->row();
        }
뷰 page
<body>
    No : <?php echo $NEWS_SEQ; ?><br>
    제목 : <?php echo $NEWS_TITLE; ?><br>
    내용 : <?php echo $NEWS_CNTS; ?><br>
    썸네일 : <?php echo $IMAGE_FILE_NM; ?><br>
    등록일 : <?php echo $REG_DTTM; ?><br><br>

</body>

어떤식으로 하는게 좋을까요..?

한대승(불의회상) / 2017/06/26 17:19:50 / 추천 0

작성된 코드대로라면 $data의 값은 가져온 배열의 마지막 값만 저장됩니다.

$data[] = [
                    'NEWS_SEQ'=>$oRow->NEWS_SEQ,
                    'NEWS_TITLE'=>$oRow->NEWS_TITLE,
                    'NEWS_CNTS'=>$oRow->NEWS_CNTS,
                    'IMAGE_FILE_NM'=>$oRow->IMAGE_FILE_NM,
                    'REG_DTTM'=>$oRow->REG_DTTM,
                ];

로 수정한후 뷰에서는 foreach로 뿌리세요.

개멧 / 2017/06/26 17:54:27 / 추천 0

한대승(불의회상)

컨트롤러에서 foreach문 지우고 $data[]를 작성하면되나여? 

한대승(불의회상) / 2017/06/26 23:27:37 / 추천 0
@겟멧 답은 드렸으니 이리저리 해보세요.
개멧 / 2017/06/27 10:38:09 / 추천 0

한대승(불의회상)

감사합니다!!