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

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

QA

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

답변 4

본문

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

 

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;

이거는 안되나요?

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 125,873
© SIRSOFT
현재 페이지 제일 처음으로