개발 Q&A

제목 CI적으로 이런문제 처리 가능할까요?
글쓴이 수야디벨 작성시각 2013/07/24 11:17:39
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14752   RSS

음 .. 이게 CI질문인지 CI외 질문인지 잘 모르겠는데,

회원페이지를 구성중인데요 , 회원 페이지에 보여지는 내용은 별건 없습니다.

이름 / 아이디 / 닉네임 / 패스워드 / 글 게시물 수

근데 여기서 문제가 되는건 글 게시물 수! 인데요,

앞의 4가지는  (이름 / 아이디 / 닉네임 / 패스워드)  DB의 회원DB만 조회하면 얻을수있는 결과인데 반면해,

글 게시물수는 글 게시물 DB의 작성자 ID를 회원 아이디와 매칭, COUNT해서 정확히 가져오려고 하거든요!

앞의 4개의 정보는 간단하게 회원DB만 조회하면 얻어올수 있는데 .. 코드로 보면

* controller

//.회원리스트 전체 출력
$this->load->model('member_model');
$data['member'] = $this->member_model->getMember();


* 모델
function getMember(){
$data= $this->db->get('member');
return $data->result();
}


그래서 이를 가지고($data['member']) view 단에서 

foreach($member as $row) :
$row->index;
$row->name;  등등등 foreach사이에 표현해주고 싶은것을 배치.
endforeach;

이렇게 표현해 주면 되었었거든요?

그런데, 아무리 생각해도 글 게시물수를 같이 얻어오는 방법이 생각이 나질 않습니다.ㅠ

우선, 

function getMember(){
$data= $this->db->get('member');
return $data->result();
}

에서 글 게시물수를 join해서 결과를  리턴한다고 가정하면,

만약 글 게시물을 3건했다면, join의 결과에 의해서 해당 회원정보는 비록 하나일지라도, 검색은 3번이 될텐데,

실제적으로 앞의 4개(이름 / 아이디 / 닉네임 / 패스워드)   는 똑같을거 아니에요?

이를 foreach로 돌리면,  똑같은 결과가 3번이나 출력이 되버리는데 ..




그래서 아래처럼 해봤었었습니다.



function member(){
//.회원리스트 전체 출력
$this->load->model('member_model');
$data['member'] = $this->member_model->getMember();
foreach($data['member'] as $row):
$id = $row->id;
endforeach;
//생성한 프로젝트 조회
$this->load->model('member_model');
$data['project_count'] = $this->member_model->getProjectCount($id);
$this->load->view('member',$data);
}


근데 아뿔싸! 저렇게 id를 던져주면 될꺼같았는데,

안되길래 생각해보니까 , $id에 들어가는 값이 배열의 가장 마지막 값이 들어가니까 ..안된다는거 ..


음 .. 그래서 이제 제가 생각하는 마지막 방법은

기존 소스를 그대로 쓰고 

foreach 

endforeach

사이에 

echo "<script>innerCount(<?=$row->id;?>)프로젝트를 카운트해주는 ajax 스크립트</script>"를 이렇게 넣어주면

개개인의 id를 스크립트에서 처리할수 있으니까 가능할꺼같은데

너무 복잡해서요 그러면 .. 

그래서 혹시나 ci에서 간편하게 할수있는 방법이 없을까해서 여쭈어봅니다 ~ㅠ
 
 다음글 php seed 암호화 라이브러리 구할곳 없을까요? (1)
 이전글 ci버전 업그레이드 및 ci에 hmvc 적용관련 질문입... (2)

댓글

하루살이 / 2013/07/24 11:56:21 / 추천 0
일단 DB공부하세요 ㅎㅎ

select
  a.*,ifnull(b.cnt,0) board_cnt 
from member as a
left join (
  select member_id,count(*) as cnt
  from board
  group by member_id) as b on a.member_id = b.member_id

다음과 같이 DB에서 직접 쉽게 가져올수 잇어요
변종원(웅파) / 2013/07/24 12:12:09 / 추천 0
순서대로 정리해보면..

1. 회원정보를 가져오는 쿼리, 그 회원정보에 대한 게시물수 쿼리를 따로 작성한다. (초보)

2. 회원정보 가져오는 쿼리와 서브쿼리로 게시물수 가져오는 쿼리를 써서 하나의 쿼리로 작성한다. 

서브쿼리 검색해서 적용하세요.
수야디벨 / 2013/07/24 13:40:18 / 추천 0
 
웅파 // 하루살이//

아~ 서브쿼리! 그런게 있었군요 . 끙 ..ㅋㅋ

감사합니다 ㅎㅎ