CI 묻고 답하기

제목 model 문제좀 봐주세요.
글쓴이 perfume 작성시각 2011/04/02 07:23:19
댓글 : 12 추천 : 0 스크랩 : 0 조회수 : 26251   RSS
오늘새벽 2시에 우연찮게 CI를 알게 되어 신세계를 맛보아 이렇게 밤을 꼴딱세우다가 질문이 있어서 이렇게 글 남깁니다.
자바와 jsp에서만 있는 줄 알고 지금은 오로지 php만 사용하기에 그 존재를 까마득하게 잊고 있었던 MVC....
그런데 생각처럼 잘 안되네요.

문제는
A Database Error Occurred
Unable to connect to your database server using the provided settings.

Filename: core/Loader.php

Line Number: 242

이러한 메시지가 뜨는군요.


아래는 제가 수정한 내용입니다.

autoload.php 코드입니다.
 

...
$autoload['libraries'] = array('database');
...



helloworld.php 코드입니다.

<?
load->model('helloworld_model');
			$data['result'] = $this->helloworld_model->getData();
			$data['page_title'] = "CI Hello World App!";
			$this->load->view('helloworld_view',$data);
		}
	}	
?>

helloworld_model.php 코드입니다.
<?db->get('data');
			if ($query->num_rows() > 0)
			{
				return $query->result();
			}
			else
			{
				show_error('Database is empty!');
			}
		}
	}
?>

helloworld_view.php 코드입니다.

<html>
 <head>
  <title><?=$page_title?></title>
 </head>
 <body>
  <?php foreach($result as $row):?>
  <h3><?=$row->title?></h3>
  <p><?=$row->text?></p>
  <?php endforeach;?>
 </body>
</html>


밤을 세웠더니 정신이 오락가락합니다.
조금이라도 도움을 주실 수 있으면 감사하겠습니다.
수고하세요.
 다음글 htaccess 설정 질문드립니다. (3)
 이전글 저도 정말 초보적인 질문한개만 부탁드립니다. (5)

댓글

케이든 / 2011/04/02 08:38:34 / 추천 0
단순한 커넥션 문제입니다. config/database.php 설정 제대로 하셧는지 확인해보세요
perfume / 2011/04/02 08:42:11 / 추천 0

이상하네요. 저도 그게 의심되서 몇번이나 확인해봤지만 아무런 문제가 없는데....

케이든 / 2011/04/02 09:00:59 / 추천 0
Database config 파일도 보여주세요
perfume / 2011/04/02 09:16:04 / 추천 0
케이든님 Database config 파일입니다.

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'userid';
$db['default']['password'] = 'password';
$db['default']['database'] = 'userid';
$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;
신경써주셔서 감사합니다...^^;
케이든 / 2011/04/02 09:23:14 / 추천 0
127.0.0.1로 바꿔서 해보세요
perfume / 2011/04/02 09:42:14 / 추천 0
참, 웹에서 바로 확인하고 있어요. apm을 통해서가 아니라...

그리고 localhost 대신 바꿔보라고 하신거죠? 그런데 안되네요...ㅠㅠ
케이든 / 2011/04/02 09:55:36 / 추천 0
보통 호스트를 저렇게 바꾸거나 pconnect false 하면 대부분 됩니다 그래도 안되시면 mysql 이랑 php 버전도 알려주세요
perfume / 2011/04/02 10:00:10 / 추천 0
flase로 바꿨더니

Fatal error: Class 'Model' not found in /home/hosting_users/pperfum/www/ci/application/models/helloworld_model.php on line 2
 
이런 메시지가 뜹니다.....ㅠㅠ
케이든 / 2011/04/02 10:09:26 / 추천 0
얼레... ci버전하고 모델 전체소스좀 올려주세요
perfume / 2011/04/02 10:20:27 / 추천 0
ci 버전은 CodeIgniter_2.0.1 이구요...
전체 소스를 여기다 올리나요? 아니면 파일로 올릴까요?
그리고 제가 잠시후에 출근을 해야 해서요...2시넘어서나 들어올 수 있을것 같습니다.


helloworld.php 소스
<?php
	class Helloworld extends CI_Controller
	{
		function index()
		{
			$this->load->model('helloworld_model');
			$data['result'] = $this->helloworld_model->getData();
			$data['page_title'] = "CI Hello World App!";
			$this->load->view('helloworld_view',$data);
		}
	}	
?>
helloworld_model.php 소스
<?php
	class Helloworld_model extends Model
	{
		function helloworld_model()
		{
			// 모델 생성자 호출
			parent::Model();
		}
		
		function getData()
		{
			// data테이블의 모든 레코드를 불러 옴.
			$query = $this->db->get('data');
			if ($query->num_rows() > 0)
			{
				return $query->result();
			}
			else
			{
				show_error('Database is empty!');
			}
		}
	}
?>
helloworld_view.php 소스
<html>
	<head>
		<title><?=$page_title?></title>
	</head>
	<body>
		<?php foreach($result as $row):?>
		<h3><?=$row->title?></h3>
		<p><?=$row->text?></p>
		<?php endforeach;?>
	</body>
</html>
autoload.php 파일은 위에서 올린 파일하고 같구요.

roudtes.php 소스입니다.
$route['default_controller'] = "helloworld";
$route['404_override'] = '';
케이든 / 2011/04/02 11:31:33 / 추천 0
요세 최신버전 CI쓰시면서 한글 때문에 1.7메뉴얼 보시는 분들이 꽤 계시나 봅니다

대부분 비슷한 증상이네요


일단 커넥션 문제는 오토로드에서 오류가 안나는거보니 pconnect = false로 해결된것같아 보입니다


그리고 모델 파일 말인데요

2.0으로 바뀌면서 구문이 좀 바꼇습니다


<?php
//2.0부터는 Model대신 CI_Model을 확장합니다
//위의 새로운 오류도 이부분에서 났네요
	class Helloworld_model extends CI_Model
	{
		//2.0부터는 php5를 권장하다보니 생성자도 php그대로 씁니다.
		function __construct()
		{
			// 모델 생성자 호출
			parent::__construct();
		}
		
		function getData()
		{
			// data테이블의 모든 레코드를 불러 옴.
			$query = $this->db->get('data');
			if ($query->num_rows() > 0)
			{
				return $query->result();
			}
			else
			{
				show_error('Database is empty!');
			}
		}
	}
?>

아무래도 왼쪽 메뉴를 한글메뉴얼 (v1.7)로 바꾸고

영문메뉴얼 (v2.0) 링크를 추가로 넣어야 할거같네요
perfume / 2011/04/02 18:49:29 / 추천 0

케이든님 감사합니다.  덕분에 해결되었습니다. 역시 버전에 따른 문제였군요. ^^;