select count로 칼럼에서 인원수를 구하려고 하는데요

select count로 칼럼에서 인원수를 구하려고 하는데요

QA

select count로 칼럼에서 인원수를 구하려고 하는데요

본문

천천히 전후사정을 설명해보겠습니다.

 

planetowl님께서 만드신 미니클럽이란 스킨을 다운받아서 해보고 있어요!

https://sir.kr/g5_skin/2902

 

테이블 생성은 아래와 같이 되어있구요!!

<code>

CREATE TABLE IF NOT EXISTS `g5_miniclub_member` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `miniclub_table` varchar(20) NOT NULL,
  `mb_id` varchar(20) NOT NULL,
  `status` varchar(10) NOT NULL DEFAULT '4',
  `join_date` datetime NOT NULL,
  KEY `no` (`no`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1");

</code>

 

테이블에서 status 는 등급 구조를 말하는데요

이게 4단계로 되어있어서

 

1은 매니저 관리자

2는 부매니저

3은 정회원

4는 신청서 넣은 사람

 

이렇게 status가 4단계로 되어있어요

 

실제로 phpmyadmin 에서 보면 아래와 같이 찍히고 있지요!

 

3690604471_1667495046.7226.png

 

여기서 어떤 문제가 있느냐면... 활동하는 정회원수를 구하려고 하는데 그게 안되요..

 

status 가 4는 = 신청서 넣은 사람이기 때문에 실제 활동회원이 아니고 

(대기하는 사람이 status 가 4라) //

4를 제외한 실제 활동회원 ( status 1 이나 2나 3의 ) 수를 구하려고 하는것이거든요

 

planetowl님 스샷을 보면

저 아래 

전체 : 2명 정회원 : 0명 이렇게 숫자가 나오고 계시거든요.

 

3690604471_1667495320.4471.gif

 

저 같은 경우는 

3690604471_1667495384.3309.png

이렇게 숫자0 조차도 안나오고 있어요 // 아에 숫자란에 암것도 등장하질 않음 ㅠ

 

planetowl님의 원코드를 보자면

 


// 정회원 수
$dbresult = sql_query( "select count(*) from g5_miniclub_member where status < 4 and miniclub_table = '$tablename'"); 
$member_rows = mysql_fetch_array( $dbresult ); 
echo "<b>정회원 : $member_rows[0]명</b>";

 

이렇게 되어있으세요

 

묻고 검색하다보니

$member_rows = mysql_fetch_array( $dbresult ); 를

 

단일행에서 구하는식으로

$member_rows = sql_fetch( $dbresult ); 에 바꿔봤는데도 여전히 안찍히고 있어요~

 

쿼리문인

 

$dbresult = sql_query( "select count(*) from g5_miniclub_member where status < 4 and miniclub_table = '$tablename'"); 

 

이또한 g5_miniclub_member 테이블에서 카운트를 하는데

status < 4 미만으로 다 되어있는거 같고...

 

무엇보다도 다른분들은 되는거 같은데..또 저를 포함한 몇몇분들은 안되는거 같아요

원래 스킨을 올리신 planetowl님도 아무 문제가 없으신거 같은데..

심지어 그누보드를 버전을 다운해봐서 테스트도 해봣는데 똑같아요 ㅠ

 

( 카운터만 집계만 그럴뿐이지 다른 기능들은 기능적으론 문제가 없어요! )

 

3690604471_1667496009.4507.jpg

 

만드신 planetowl님께서 요즘 접속을 안하고 계시고.. 어디 여쭤볼곳이 없어서...

혹시 조언해주실분 계시면 감사드리겠습니다 ㅠ

카운트 하나 집계못하는 초짜가 해보다해보다 탈모가 와서 질문을 남기고 가요

이 질문에 댓글 쓰기 :

답변 4

$member_rows = mysql_fetch_array( $dbresult ); 

아래처럼 고쳐 보세요  

$member_rows = mysqli_fetch_array( $dbresult );       

 

직접 설치해 보고 드리는 글입니다 (  mysqli_fetch_array  => i 포함된 )

 

PHP의 버전에 따라 어느 곳에서는 예전 버전인 mysql_fetch_array 지원이 

되어서 보여주고 어느곳은 지원이 안되어 보여주지 않는 ( 모듈 설치가 되지 않아 ) 생기는 오류로 

알고 있습니다

에러 메시지를 보셨다면

해결하실 수 있었을 겁니다.

아하
error_reporting(E_ALL);
ini_set("display_errors", 1); 이렇게 넣어서 에러메세지를 확인하는군요!!
오늘 첨 알았습니다!! 감사합니다
어디서 에러메세지를 확인하는거지 하고 어리둥절하던 초보랍니다 ㅠ.ㅠ
엑스엠엘님 덕분에 앞으로 든든합니다! 에러만 나와봐라!!!

생성할때 컬럼을 보면

status varchar 로 되어있습니다. 즉, 문자열이죠


// 정회원 수
$dbresult = sql_query( "select count(*) from g5_miniclub_member where status < 4 and miniclub_table = '$tablename'"); 

에서보면

status < 4 로 하셨죠

정수형이 아닌 문자형인데말이죠

 

status in ('1','2','3') 으로 하거나

status not in ('4') 로 하시는게 좋을겁니다.

변경하면 + 약간 수정하면

 


// 정회원 수
$member_rows= sql_fetch( "select count(*) cnt from g5_miniclub_member where status not in ('4') and miniclub_table = '{$tablename}'"); 
echo "<b>정회원 : {$member_rows['cnt']}명</b>";

 

로 해보세요

 

아! 잠깐 그 생각을 해봤었는데 다른분들은 왜 저렇게 했을때 잘나오고 나만 이럴까 생각을해봤었죠
ㅠ.ㅠ  채택이 하나뿐 안가네요 ㅠ.ㅠ 용서하소서...

플래토님은 더 정확히 핵심을 찝어서 가르쳐주셨어요 감사드립니다~

$dbresult = sql_query( "select * from g5_miniclub_member where status in ('1','2','3') and miniclub_table = '$tablename'");

$member_rows = sql_num_rows( $dbresult );

 

echo $member_rows;

이거는 안되나요?

감사! 또 감사드립니다! 채택을 드려야될분들이 너무 많은데 채택이 1개뿐이 안됨을 용서하소서 ㅠ.ㅠ 문자형으로 정확히 말씀하신대로 하니 잘나옵니다!! 감사드려요

답변을 작성하시기 전에 로그인 해주세요.
전체 128
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT