CodeIgniter

Model

Model

View가 표현을 담당한다면 Model은 데이터를 담당한다. 여기서 데이터란 주로 데이터베이스를 의미한다. 즉 데이터를 다루는 로직을 모델에 모아둬서 데이터와 뷰를 격리 시키는 것이다. 이를 통해서 코드 관리의 편의성을 높일 수 있고, 향후 데이터베이스를 다른 타입으로 교체가 용이하다.

데이터베이스 설정

데이터베이스를 설정하기 위해서는 Application/config/database.php 파일을 수정한다. 이 중에서 주요한 몇가지 설정에 대해서만 언급하면 아래와 같다. (database.php 예제 참고 ,데이터베이스 설정 참고)

  • hostname : 데이터베이스 서버의 주소 (localhost는 PHP와 같은 머신을 의미)
  • username : 데이터베이스 사용자의 이름
  • password : 데이터베이스 비밀번호
  • database : 데이터베이스 명
  • dbdriver : 데이터베이스의 종류로 지원되는 드라이브의 목록은 system/database/drivers 디렉토리명을 참고한다.

데이터베이스 설정 파일에는 서버에 접속 할 수 있는 기밀정보가 포함되어 있기 때문에 버전관리에 포함시키면 안된다. 버전관리를 할 때는 버전관리에서 제외하도록 하자.

데이터베이스 라이브러리 로드

데이터베이스를 사용하기 위해서는 우선 데이터베이스 라이브러리를 로드해야 한다. 이 라이브러리는 CI 에서 데이터베이스를 제어 하는 방법을 제공한다. 이것을 로드하는 방법은 두가지다. (topic.php 예제 참고, 데이터베이스 Quick Start 참고)

  • application/config/autoload.php 파일의 $autoload['libraries'] 배열에 'database'를 추가한다. 
  • controller 내에서 $this->load->database()를 호출한다.

설정과 라이브러리 로드가 끝났다면 이제 모델 클래스 파일을 생성해야 한다. 

모델 파일의 사용

Model 파일은 application/models 디렉토리 아래에 '모델명_model.php' 의 형식으로 파일을 만든다. 파일은 CI_Model 클래스를 상속 받아야 하고 클래스 명은 '대문자로 시작하는 모델명_model'이어야 한다. (topic_model.php 예제 참고 ,Anatomy Model 참고)

모델 내에서 쿼리를 사용하기 위해서는 $this->db를 이용한다. 예를들어 topic 테이블의 내용을 조회한다면 아래와 같이하면 된다.

$this->db->query("SELECT * FROM topic")

쿼리의 결과를 가져오려면 아래와 같이하면 된다.

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

쿼리 결과 생성

result()는 쿼리의 결과를 가져오는 방법을 정한다. 만약 연관배열의 형태로 데이터를 가져오고 싶다면 result_array()를 사용하고 결과가 한행이라면 row()를 사용한다. (쿼리 결과 생성 방법 참조)

Active Record

Active Record는 좀 더 프로그래밍적으로 데이터베이스를 제어하는 방법이다. 예를들어 topic 테이블에서 id 값이 3인 행을 조회하고 싶다면 아래와 같이 한다.

$this->db->get_where('topic', array('id'=>$topic_id))->row();

Active Record를 이용하면 표준 SQL을 이용할 수 있어서 에플리케이션을 좀 더 이식성 좋은 형태로 만들 수 있고, 프로그래밍적으로 쿼리를 생성 할 수 있기 때문에 SQL 문자열을 직접 다루는 수고를 덜 수 있다. 

모델 사용

model은 데이터를 가져오는 로직을 메소드로 정의하고, 이 메소드는 controller를 통해서 사용된다. 아래는 모델을 사용하는 방법이다. 

모델 로드

모델을 사용하기 위해서는 모델을 로드해야 하는데 아래의 형식을 사용한다.

형식 : $this->load->model('소문자로된 모델 클래스 명'); 

예제 : $this->load->model('topic_model');

모델 호출

이제부터는 아래의 형식으로 로드한 모델의 API를 호출 할 수 있다. 

형식 : 모델 클래스 명'->'메소드 명'

예제 : $topics = $this->topic_model->gets();

예제

github diff

본 예제는 데이터베이스와 데이터가 필요하다. 필자는 MySQL을 DB로 사용하고, 데이터는 생활코딩 웹서비스 만들기 실습편의 내용에서 사용한 것을 사용할 것이다. 우선 opentutorials라는 데이터베이스를 만들고, topic이라는 테이블을 생성한 후에 데이터를 삽입하자.

CREATE DATABASE opentutorials CHARACTER SET utf8 COLLATE utf8_general_ci;
use opentutorials;
CREATE TABLE topic (
    id  int(11) NOT NULL AUTO_INCREMENT,
    title  varchar(255) NOT NULL ,
    description  text NULL ,
    created  datetime NOT NULL ,
    PRIMARY KEY (id)
);
INSERT INTO `topic` (title,description,created) VALUES ('JavaScript란', '<h2>\r\n    자바스크립트는</h2>\r\n<ul>\r\n	<li>\r\n		브라우저에서 실행되는 언어</li>\r\n	<li>\r\n		가장 많이 사용되는 언어</li>\r\n	<li>\r\n		주로 html을 프로그래밍적으로 조작하기 위해서 사용됨</li>\r\n</ul>\r\n<h2>\r\n	예제</h2>\r\n<ul>\r\n	<li>\r\n		자바스크립트는 3가지 방식으로 사용됨</li>\r\n	<li>\r\n		외부의 파일을 로드</li>\r\n	<li>\r\n		&lt;script&gt;태그 사이에 기술</li>\r\n	<li>\r\n		태그에 직접 기술</li>\r\n</ul>\r\n<h2>\r\n	참고링크</h2>\r\n<ul>\r\n	<li>\r\n		<a href=\"http://www.maroon.pe.kr/webmaster/java/java_study.html\" target=\"_blank\">스크립트 세상</a></li>\r\n	<li>	\r\n</ul>\r\n', now());
INSERT INTO `topic` (title,description,created) VALUES ('변수와 상수', '<p>\r\n	변수란</p>\r\n<ul>\r\n	<li>\r\n		변하는 값</li>\r\n	<li>\r\n		x = 10 일 때 왼쪽항인 x는 오른쪽 항인 10에 따라 다른 값이 지정된다.</li>\r\n</ul>\r\n<p>\r\n	상수란</p>\r\n<ul>\r\n	<li>\r\n		변하지 않는 값</li>\r\n	<li>\r\n		x = 10 일 때 오른쪽항인 10이 상수가 된다.</li>\r\n</ul>\r\n<pre class=\"brush: xml\">\r\n&lt;script type=&quot;text/javascript&quot;&gt;\r\n&nbsp;&nbsp;&nbsp; // x의 값이 오른쪽 항에 따라서 변한다.\r\n&nbsp;&nbsp;&nbsp; // x가 변수라는 명시적인 의미\r\n&nbsp;&nbsp;&nbsp; var x = 10;\r\n&nbsp;&nbsp;&nbsp; alert(x);\r\n&nbsp;&nbsp;&nbsp; var x = 20;\r\n&nbsp;&nbsp;&nbsp; alert(x);\r\n&lt;/script&gt;</pre>\r\n<p>\r\n	&nbsp;</p>\r\n', now());
INSERT INTO `topic` (title,description,created) VALUES ('연산자', '<p>\r\n	연산에 사용되는 기호들. (y = 5 일 때)</p>\r\n<table class=\"table\">\r\n	<tbody>\r\n		<tr>\r\n			<th align=\"left\" width=\"15%\">\r\n				Operator</th>\r\n			<th align=\"left\" width=\"40%\">\r\n				Description</th>\r\n			<th align=\"left\" width=\"25%\">\r\n				Example</th>\r\n			<th align=\"left\" width=\"20%\">\r\n				Result</th>\r\n		</tr>\r\n		<tr>\r\n			<td valign=\"top\">\r\n				+</td>\r\n			<td valign=\"top\">\r\n				더하기</td>\r\n			<td valign=\"top\">\r\n				x=y+2</td>\r\n			<td valign=\"top\">\r\n				x=7</td>\r\n		</tr>\r\n		<tr>\r\n			<td valign=\"top\">\r\n				-</td>\r\n			<td valign=\"top\">\r\n				빼기</td>\r\n			<td valign=\"top\">\r\n				x=y-2</td>\r\n			<td valign=\"top\">\r\n				x=3</td>\r\n		</tr>\r\n	</tbody>\r\n</table>\r\n', now());
INSERT INTO `topic` (title,description,created) VALUES ('JSON', '<h2>JSON이란?</h2>\r\n\r\n<p>서로 다른 언어들간에 데이터를 주고 받는 여러 방법이 있다. 대표적인 것이 XML인데, XML은 문법이 복잡하고, 엄격한 표현규칙으로 인해서 json 대비 데이터의 용량이 커진다는 단점이 있다.</p>\r\n\r\n<p>JSON은 경량의 데이터 교환 형식으로 JavaScript에서 숫자와 배열등을 만드는 형식을 차용해서 이것을 다른 언어에서도 사용할 수 있도록 한 텍스트 형식이다.&nbsp;</p>\r\n\r\n<p>아래 예제는 위의 예제에서 전송한 데이터를 받아서 몇가지 부가정보를 추가해서 json으로 인코드한 후에 다시 반환하는 PHP 코드다.&nbsp;</p>\r\n\r\n<p>json.php - (<a href=\"https://github.com/egoing/codingeverybody_javascript/blob/master/JSON/json.php\" target=\"_blank\">github</a>)</p>\r\n\r\n<pre class=\"brush: php\">\r\n&lt;?php\r\n$userinfo = json_decode($_GET[&#39;data&#39;]);\r\n$userinfo-&gt;address = &#39;seoul&#39;;\r\n$userinfo-&gt;phonenumber = &#39;01023456789&#39;;\r\necho json_encode($userinfo);\r\n?&gt;</pre>\r\n\r\n<h2>json의 형식</h2>\r\n\r\n<h3>object</h3>\r\n\r\n<p>객체는 아래와 같은 문법을 가지고 있다.</p>\r\n\r\n<p>예제</p>\r\n\r\n<p>{&quot;userid&quot;:&quot;egoing&quot;,&quot;pwd&quot;:&quot;12345567&quot;}</p>\r\n\r\n<p><img height=\"113\" src=\"http://www.json.org/object.gif\" width=\"598\" /></p>\r\n\r\n<h3>array</h3>\r\n\r\n<p>배열은 아래와 같은 문법을 가지고 있다.&nbsp;</p>\r\n\r\n<p>예제</p>\r\n\r\n<p>[1,2,3,4]</p>\r\n\r\n<p><img height=\"113\" src=\"http://www.json.org/array.gif\" style=\"line-height: 1.8em;\" width=\"598\" /></p>\r\n\r\n<h3>Value</h3>\r\n\r\n<p>위에서 사용된 Value는 값을 의미하는데&nbsp;큰 따옴표로 묶인 문자나 숫자, 불린 값이 사용된다.</p>\r\n\r\n<p>예제</p>\r\n\r\n<ul>\r\n	<li>문자 : &quot;헬로우 월드&quot;</li>\r\n	<li>숫자 : 1</li>\r\n	<li>불린 : true</li>\r\n</ul>\r\n\r\n<p><img height=\"278\" src=\"http://www.json.org/value.gif\" width=\"598\" /></p>\r\n', now());

application/config/database.php

일부 웹호스팅 환경에서는 pconnect true를 지원하지 않는 경우가 있다. pconnect에 대해서는 아래 링크를 참조하자. pconnect

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'egoing';
$db['default']['password'] = '111111';
$db['default']['database'] = 'opentutorials';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

application/controllers/topic.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Topic extends CI_Controller {
    function __construct()
    {       
        parent::__construct();
        $this->load->database();
        $this->load->model('topic_model');
    }
    function index(){        
        $this->load->view('head');
        $topics = $this->topic_model->gets();
        $this->load->view('topic_list', array('topics'=>$topics));
        $this->load->view('main');
        $this->load->view('footer');
    }
    function get($id){        
        $this->load->view('head');
        $topics = $this->topic_model->gets();
        $this->load->view('topic_list', array('topics'=>$topics));
        $topic = $this->topic_model->get($id);
        $this->load->view('get', array('topic'=>$topic));
        $this->load->view('footer');
    }
}
?>

application/models/topic_model.php

<?php
class Topic_model extends CI_Model {

    function __construct()
    {    	
        parent::__construct();
    }

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

    function get($topic_id){
    	return $this->db->get_where('topic', array('id'=>$topic_id))->row();
    }
}

application/views/get.php

<article>
	<h1><?=$topic->title?></h1>
	<div>
		<?=$topic->description?>
	</div>
</article>

위의 예제에서 <?=$topic->title?> 은 <?=htmlspecialchars($topic->title)?>으로 처리해야 한다. htmlspecialchars 는 HTML 코드를 HTML 코드를 인코딩해서 html 코드가 해석되지 않도록 한다. 예를들어 아래의 내용을 제목으로 입력해보자. (입력 한 후에 디비에서 직접 데이터를 직접 삭제할 수 있는 경우만 하자. 안그러면 페이지로 접근 자체가 불가능해질 것이다. ) <script>alert('haha');location.href="http://naver.com"</script> 해당 페이지로 방문한 사용자를 엉뚱한 페이지로 보내버린다. 이것을 방지하기 위한 기능이 htmlspecialchars다. 이것은 매우 중요한 부분이지만, 다소 복잡한 논의가 함의되어 있기 때문에 보안시간에 알아볼 생각이었는데 보안 수업이 예상보다 뒤에 배치되면서 임시로 언급만 해두겠다. 보안에 대한 내용은 다음 링크를 참조한다. http://opentutorials.org/module/327/3837

application/views/main.php

토픽메인

application/views/topic_list.php

<ul>
<?php
foreach($topics as $entry){
?>
	<li><a href="/index.php/topic/get/<?=$entry->id?>"><?=$entry->title?></a></li>
<?php
}
?>
</ul>

 Tag

태그이름 : Model2

태그 주소 : https://github.com/egoing/codeigniter_codeingeverbody/tree/Model2

댓글

댓글 본문
작성자
비밀번호
  1. ecoming
    데이터베이스 설정에서요
    mysqli 로 하면 되는데 그냥 mysql 로 하니깐 안되네요 ??
  2. Kim Jeehwan
    htmlspecialchars($topic->description)를 썼더니 HTML 코드 그대로 나오네요?

    브라우저가 HTML을 파싱하게 하는 방법 없나요?
  3. JustStudy
    고맙습니다
  4. 허민호
    어렵다..
  5. 주재호
    안녕하세요. 강의 본질과 다른 질문이 될 수 있는데 궁금해서요.
    이미 데이터베이스에서 모든 topics 를 가져왔는데 id 로 다시 select 해 title 과 description 을 가져올 필요가 있는 건가요? 이미 가져온 객체(테이블정보)를 메소드 인자로 넘겨 재활용하면 프로그램 성능 상에서 더 비효율적인건가요?
  6. 고고1
    음,, 듣다보니, 찬찬히 CI 메뉴얼 보고 강의를 보는게 좋을 것 같아서,, ㅎㅎ
    제가 따라가는 속도가 늦네여 ㅜㅜ
  7. ahydas
    myysql의 my.cnf 파일에서 'bind-address'항목이 127.0.0.1로 기본설정이 되어 있는데요,
    이 값을 localhost로 바꿔주어야 합니다.
    아니면 앞머리에 #을 붙여서 설정이 적용되지 않도록 해야 합니다.

    방법은
    sudo nano /etc/mysql/my.cnf
    를 입력후 편집기 안에서 수정하시면 됩니다.
    대화보기
    • 코이코이
      아... View까지는 매우 쉽게 잘 됐는데
      여기 Model 2강부터 매우 꼬이는군요
      view강의때 get을 main이라고 바꾸라고 하셨는데 여기서는 그게 적용안된거에서 꼬입니다.
      근데 이거는 별로 크지 않은 문제고... 큰 문제는 이거네요

      저 밑에는 DB의 본문 내용(그냥 문자열)인데요.
      빨간박스의 내용은 솔직히 봐도 잘 모르겠고...
      수업들으시는분들은 MVC의 핵심내용만 아시자고 하시면
      phpmyadmin 들어가신후, 삽입란에가서 DB의 본문내용을
      <p>자바스크립트 본문입니다.</p>
      <p>자바스크립트 본문입니다.</p>
      <p>자바스크립트 본문입니다.</p>
      이렇게 바꾸고 하시는게 낫겠네요



      문제의 DB 값입니다. html형식만 있어야하는곳에 \r\n이 왜 들어갔는지 모르겠네요...
      \r\n는 php에서만 먹히는 코드일텐데
      VALUES ('JavaScript란', '<h2>\r\n 자바스크립트는</h2>\r\n<ul>\r\n <li>\r\n 브라우저에서 실행되는 언어</li>\r\n <li>\r\n 가장 많이 사용되는 언어</li>\r\n <li>\r\n 주로 html을 프로그래밍적으로 조작하기 위해서 사용됨</li>\r\n</ul>\r\n<h2>\r\n 예제</h2>\r\n<ul>\r\n <li>\r\n 자바스크립트는 3가지 방식으로 사용됨</li>\r\n <li>\r\n 외부의 파일을 로드</li>\r\n <li>\r\n &lt;script&gt;태그 사이에 기술</li>\r\n <li>\r\n 태그에 직접 기술</li>\r\n</ul>\r\n<h2>\r\n 참고링크</h2>\r\n<ul>\r\n <li>\r\n <a href=\"http://www.maroon.pe.kr/webmaster/java/java_study.html\" target=\"_blank\">스크립트 세상</a></li>\r\n <li> \r\n</ul>\r\n', now());
    • 자바몬
      저두 이거때메 왜이러징 하고 한시간을 날렸어여 ㅜㅜ
      이게 보니까 인코딩을 client 쪽과 server 쪽을 utf8 로 통일하면
      한글로 입력한것은 아예 쌩? 까더라구여..
      그래서 server 쪽은 utf8로 하구여 client 쪽은 euckr 로 바꾸니까
      한글 입력과 출력이 잘되네여.
      그 Mysql에서 설정하는 파일 잇자나여 my.ini 에서
      [client]
      default-character-set=euckr
      [mysqld]
      default-character-set=utf8
      만 있으면 바꾸고 없으면 추가해주시면 정상적으루 잘되네여.
      물론 mysql 껏다키고 데이터베이스 삭제했다가 다시 입력해주세여~
      대화보기
      • 마지막에
        function index(){
        $this->load->view('head');
        $topics = $this->topic_model->gets(); <<이것또한 아래 코드와
        ...
        }
        function get($id){
        $this->load->view('head');
        $topics = $this->topic_model->gets(); <<이것또한 위의 코드와
        ...

        함께 function __construct(){ 쪽으로 빼고 싶은데 방법 아시는 분?
      • 정동원
        class명의 첫 문자를 대문자로 해야 하는건 변경 된건가요?
        별 생각 없이 소문자로 쓰고 따라하고 있었는데 문제 없이 동작 되고 있습니다.
        뭔가 이상해서 덧글을 남깁니다~ 좋은 강의 항상 감사 드립니다.
      • 이럴수가!
        작동은 되나 앞으로 mysql 지원이 중단되니 mysqli로 바꿔달라는 에러가 뜨네요~

        그래서 application/config/database.php

        옵션에서 bdriver에서 mysql을 mysqli로 바꿨더니 오류가 발생하지 않네요...
      • CodeIgniter 3.0 부터는 model php 파일 앞글자를 대문자로 써야되는거 같아요.
      • 이선호
        <?
        $connect = mysql_connect("localhost","username","passwd")
        or die (mysql_error());
        mysql_select_db("dbname");
        ?>

        이렇게 db 연결구문을 사용하고 나서 db 접속을 해보세요.

        'localhost' 는 그대로 써주면 되고,
        'username' 은 mySQL db의 생성자 id,
        'passwd'는 mySQL 접근을 위한 user의 비밀번호 입니다.
        대화보기
        • 옵티마이저
          일단 어떻게든 실습은 모두 마무리를 했는데요 mysql 모니터를 통해서 입력한 데이터 중. 한글로 작성된 내용은 아예 출력이 되질 않네요. select *from topic/G를 해도 영타만 보이고, INSERT문을 통한 한글입력부분은 아예 없습니다.
          UTF-8으로 바꾼다고 여기저기 손을 대보았지만 여전히 출력이 안되는데요. 무슨 문제가 있는걸까요?
        • 아이반
          강의 열심히 잘 보고 있습니다.
          동영상강의를 보다가 궁금한 점이 생겨서 질문 드립니다.
          강의에서 처럼 테이터베이스에 접속하면 기본적으로 connetion pool를
          사용하는건지 아니면 connetion pool을 사용하기 위하여 따로 설정하여야 하는지
          고수님들 좀 알려 주셨으면 합니다.
          그럼 좋은 하루 되세요.
        • david20jazz
          mysql에 데이터 베이스 입력하는 단계에서 아래와 같은 오류가 뜹니다. 혹시 아시는 고수님 계신가요? 카페24 호스팅 사용하고 있습니다.

          No connection. Trying to reconnect...
          ERROR 2005 (HY000): Unknown MySQL server host 'now());' (3)
          ERROR:
          Can't connect to the server
        • 배트맨
          브라우저 인코딩을 utf-8로 맞춰보세요~
          대화보기
          • 질문
            저도 gets()불러올 때 db정보가 깨져서 나와요..
            어떻게 해야하나요?????????? 도와주세요!!

            object(stdClass)#17 (4) { ["id"]=> string(1) "1" ["title"]=> string(13) "JavaScript�€" ["description"]=> string(209) "
            �먮컮�ㅽ겕由쏀듃��

            釉뚮씪�곗��먯꽌 �ㅽ뻾�섎뒗 �몄뼱
            媛€�� 留롮씠 �ъ슜�섎뒗 �몄뼱
            二쇰줈 html�� �꾨줈洹몃옒諛띿쟻�쇰줈 議곗옉�섍린 �꾪빐�� �ъ슜��
            " ["created"]=> str

            생략..
          • 김용휘
            위 예제로 따라하다 gets()불러올 때 return $this->db->query('SELECT * FROM topic ')->result();
            db에 있는 정보가 출력이 될 떄 아래 처럼 깨져서 나와요 어떻게 해야하나요??전부 utf8로 맞춰져 있어요 ㅜㅡ

            object(stdClass)#17 (4) { ["id"]=> string(1) "1" ["title"]=> string(13) "JavaScript¶?" ["description"]=> string(681) "
            ??¹?½º??¸³Æ®´?

            º?¶?¿???¿¡¼­ ½?????´? ¾ð¾?
            °¡?? ¸¹?? ??¿???´? ¾ð¾?
            ??·? html?? ??·?±×·¡¹????¸·? ?¶????±? ?§?ؼ­ ??¿???
            ¿¹??
            생략......
          • 김승갑
            좋은 강의 감사합니다. 많이 배워가네요 :D
          • egoing
            var_dump는 브라우저에서 소스보기 한번해보세요. 디비는 한글인 경우 입력이 안되지 않나요?
            대화보기
            • 최석준
              안녕하세요~ 좋은강좌 정말 감사드립니다.

              공부하는중 문제이 봉착했습니다.

              첫번재 var_dump로 데이터베이스에 입력된 값을찍어보니 강좌처럼 정리되서 찍히지 않고 전부 붙어져서 출력이되네요 ㅠㅠ
              왜그런걸까요?

              두번째 Mysql 콘솔에서 태그를 입력하니 한글과 일부 태그는 insert 되지 않는 현상이 있어서서요

              확인부탁드릴게요~
              감사합니다.
            • 연필깎이
              아.. 아래 빨간박스를 뒤늦게 봤네요.. ㅎㅎ
              대화보기
              • 연필깎이
                실습 과정에서 크게 중요하진 않은 부분 같은데..
                2번영상 10:42초경에 var_dump()로 출력한 부분에서..
                태그들이 그냥 텍스트로 출력되잖아요..
                저의 경우는 태그가 적용되서 화면에 출력되거든요..
                3번 영상에서 get에 해당하는 페이지들이 보이듯이..
                그렇게 태그가 적용된 내용들이 보입니다.
                var_dump()만으로 태그가 텍스트로만 보이게 하려면 어떻게 해야 하나요?
              • 까만거북이
                닷홈 서비스를 사용하느라 약간 애를 먹었네요.

                닷홈과 같이 일부 서비스는 아예 DB서버(MySQL서버) 외부접속을 막아놓는다고 합니다.

                그래서 DB 호스트네임에 localhost를 적어주셔야만 작동됩니다. :)
              • 오랜지
                Unable to connect to your database server using the provided settings.

                Filename: C:\APM_Setup\htdocs\system\database\DB_driver.php

                Line Number: 124

                동영상 2번째꺼에서 2:16초 쯤꺼 하니깐 여기에(http://localhost......pic) 이런오류 떠요 ㅠㅜ
                대화보기
                • 김원진
                  <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
                  class Topic extends CI_Controller {
                  function index(){
                  $this -> load ->database(); /*************/
                  $this -> load ->view('head');
                  $this -> load ->view('topic');
                  $this -> load ->view('footer');
                  }
                  function get($id){

                  $data=array('id'=>$id);
                  $this -> load ->view('head');
                  $this -> load -> view('get',$data);
                  $this -> load ->view('footer');
                  }
                  }
                  ?>
                  원래상태에서 http://localhost......에 들어가면 '토픽 메인 페이지입니다.'라고 출력됩니다.
                  /*************/가 있는 줄을하고 http://localhost......에 들어가면 '토픽 메인 페이지입니다.'라고 출력되야 하는데 아무것도 출력이 되지 않습니다.. 문제가 뭔지 알수 있을까요?
                • binia
                  500 Internal Server Error <-- 이 에러가 뜨네요 헐 index.php까지 잘 표현 되고 html이나 php파일 표현이 잘되는거

                  아파치 서버 를 확인했는데 저 에러가 나오네요 흠 왜 그럴까요? 버젼은 2.1.4를 사용했습니다
                • 비기너
                  아 xampp 로 해다시해보니까 되네요 ;; 근데 왜 wampserver로는 안됐었던걸까요;
                • 비기너
                  model2영상에서 16분18초까지따라하면 결과가

                  topic main
                  title?> title?> title?> title?>
                  리스트로 안나오고 이런식으로 나옵니다 어떻게 해야되죠??

                  원래 제가 wampserver를 썼었는데 xampp라는 프로그램을 쓰니까
                  타이틀은 제대로 나오는 이번엔 리스트 형식으로 안나와요 그냥 한줄로 나와요
                  뭐가잘못된거죠?
                • CICI
                  좋은 강의 감사합니다 ^^ CI접근 하는데 큰 도움이 되고 있네요.잘 보겠습니다.
                • Sungkawng Mun
                  좋은 강의 감사합니다. 윈도우의 경우 예제중 mysql에 insert into 명령이 잘 안 되어 myphpadmin에 수동으로 입력하니 잘 되었습니다. 그리고 영상에 나오는 예제문(데이타베이스)과 이 페이지에 있는 예제문이 달라 helper 페이지에 있는 영상에서 url이 나오지 않는 군요. 그래서 역시 myphpadmin에 살짝 추가해서 확인해 보았습니다. 혹시나 해서 다른분들을 위해 말씀드립니다.
                • egoing
                  피카넥션은 커넥션을 계속 유지하는 옵션인데 호스팅에서는 지원 안할수도 있겠네요. 본문에 반영 할께요. 화이팅입니다!
                  2013년 4월 21일 일요일에 Disqus님이 작성:
                  대화보기
                  • metaskyer
                    applicaton/config/database.php파일에서$db['default']['pconnect'] = FALSE;요롷게 바꿔주니 됩니다. ^^호스팅업체의 디비 설정이나 권한 부분에 대해서 이해가 필요한 것으로 보입니다.
                    대화보기
                    • egoing
                      어떤 부분에서 문제가 있나요? :)
                      대화보기
                      • metaskyer
                        cafe24에 호스팅하고 있는 도메인을 활용해 보니, 여기서 부터 문제가 생깁니다. 데이터베이스 설정이 어렵군요. 알아가면 알수록 어려워집니다. ㅎㅎ
                      • 유노유노
                        와..오늘 첨으로 들어와서 순서대로 보고있는데...머리에 쏙쏙 들어오네요.^^ 잘보겠습니다..ㅎㅎ
                      • 쌈닭
                        :D
                      버전 관리
                      egoing
                      현재 버전
                      선택 버전
                      graphittie 자세히 보기