어디가 잘못된 걸까요? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

어디가 잘못된 걸까요? 정보

질문 어디가 잘못된 걸까요?

본문

3.**에서 사용하던 포인트별 아이콘 부여 소스를 g4용으로 바꿨는데 도저히 안됩니다.
어디가 잘못된건지 지적 좀 해주세요. ㅠ.ㅠ

===============================================================================

function level_icon($mb_id) {

$sql = "select * from $g4[member_table] where mb_id='$mb_id'";
$result = sql_query($sql);
$data = sql_fetch_array($result);

$is_admin = is_admin($mb_id);
$ic_point = $data[mb_point];
$ic_level = $data[mb_level];//레벨별 자동아이콘. 포인트하고는 상관없는 소스임
$ic_mb_id = $data[mb_id];//특정회원 지정아이콘

if($is_admin == 'super') //최고 관리자 아이콘
              {echo "<img src=../img_my/level_/sp.gif align=absmiddle>";}
else if($ic_mb_id == 'test') //특정회원 지정아이콘
              {echo "<img src='../img_my/level_/g.gif' align=absmiddle>";}
else if(!$ic_point) //비회원 아이콘
              {echo "<img src='../img_my/level_/guest.gif' align=absmiddle>";}
else if($ic_point <= 1000) //1점 이상 1,000점 이하 아이콘1
              {echo "<img src='../img_my/level_/1.gif' align=absmiddle>";}
      else if($ic_point <= 3000) //1,001점 이상 3,000점 이하 아이콘2
              {echo "<img src='../img_my/level_/2.gif' align=absmiddle>";}
      else if($ic_point <= 7000) //3,001점 이상 7,000점 이하 아이콘3
              {echo "<img src='../img_my/level_/3.gif' align=absmiddle>";}
      else if($ic_point <= 15000) //7,001점 이상 15,000점 이하 아이콘4
              {echo "<img src='../img_my/level_/4.gif' align=absmiddle>";}
      else if($ic_point <= 30000) //15,001점 이상 30,000점 이하 아이콘5
              {echo "<img src='../img_my/level_/5.gif' align=absmiddle>";}
      else if($ic_point <= 60000) //30,001점 이상 60,000점 이하 아이콘6
              {echo "<img src='../img_my/level_/6.gif' align=absmiddle>";}
      else if($ic_point <= 100000) //60,001점 이상 100,000점 이하 아이콘7
              {echo "<img src='../img_my/level_/7.gif' align=absmiddle>";}
      else if($ic_point <= 200000) //100,001점 이상 200,000점 이하 아이콘8
              {echo "<img src='../img_my/level_/8.gif' align=absmiddle>";}
      else if($ic_point <= 300000) //200,001점 이상 300,000점 이하 아이콘9
              {echo "<img src='../img_my/level_/9.gif' align=absmiddle>";}
      else if($ic_point>=300001) //300,001점 이상 아이콘10
              {echo "<img src='../img_my/level_/10.gif' align=absmiddle>";}

}

=========================================================================================
  • 복사

댓글 전체

헐.. 나스카님 뭔 그런 말씀을 하십니까..
저도 그거 관리자님께 배웠습니다.
잊어버릴까봐 팁앤테크에 올려뒀던 내용이구요. 지금도 찾아보고 왔습니다.ㅋㅋㅋ
http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=tiptech&sselect=concat%28wr_subject%2Cwr_content%29&stext=%C3%D6%BD%C5%B1%DB&soperator=1&page=1&wr_id=6201
root님 말씀이 맞군요.
root님 말씀대로 하니 제대로 됩니다. - global $g4; 없이 하니 로그인스킨에서 문제가 발생하더군요. -
그래서
=======================
global $g4;
==========================
를 추가하고, 쿼리문을 아래처럼 바꿨더니 잘 됩니다
==========================
g4_member
=>
$g4[member_table]
==========================


최종소스는 다음과 같습니다.

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//*******************************************************************************/
//포인트별 아이콘 부여
function level_icon($mb_id) {

global $g4;

$sql = "select mb_point, mb_level from $g4[member_table] where mb_id='$mb_id'";
$result = sql_query($sql);
$data = sql_fetch_array($result);

$is_admin = is_admin($mb_id);
$ic_point = $data[mb_point];
$ic_level = $data[mb_level];//레벨별 자동아이콘. 포인트하고는 상관없는 소스임
$ic_mb_id = $data[mb_id];//특정회원 지정아이콘

if($is_admin == 'super') //최고 관리자 아이콘
              {echo "<img src=../img_my/level_/sp.gif align=absmiddle>";}
else if($ic_mb_id == 'hayandungi') //특정회원 지정아이콘
              {echo "<img src='../img_my/level_/g.gif' align=absmiddle>";}
else if(!$ic_point) //비회원 아이콘
              {echo "<img src='../img_my/level_/guest.gif' align=absmiddle>";}
else if($ic_point <= 1000) //1점 이상 1,000점 이하 아이콘1
              {echo "<img src='../img_my/level_/1.gif' align=absmiddle>";}
      else if($ic_point <= 3000) //1,001점 이상 3,000점 이하 아이콘2
              {echo "<img src='../img_my/level_/2.gif' align=absmiddle>";}
      else if($ic_point <= 7000) //3,001점 이상 7,000점 이하 아이콘3
              {echo "<img src='../img_my/level_/3.gif' align=absmiddle>";}
      else if($ic_point <= 15000) //7,001점 이상 15,000점 이하 아이콘4
              {echo "<img src='../img_my/level_/4.gif' align=absmiddle>";}
      else if($ic_point <= 30000) //15,001점 이상 30,000점 이하 아이콘5
              {echo "<img src='../img_my/level_/5.gif' align=absmiddle>";}
      else if($ic_point <= 60000) //30,001점 이상 60,000점 이하 아이콘6
              {echo "<img src='../img_my/level_/6.gif' align=absmiddle>";}
      else if($ic_point <= 100000) //60,001점 이상 100,000점 이하 아이콘7
              {echo "<img src='../img_my/level_/7.gif' align=absmiddle>";}
      else if($ic_point <= 200000) //100,001점 이상 200,000점 이하 아이콘8
              {echo "<img src='../img_my/level_/8.gif' align=absmiddle>";}
      else if($ic_point <= 300000) //200,001점 이상 300,000점 이하 아이콘9
              {echo "<img src='../img_my/level_/9.gif' align=absmiddle>";}
      else if($ic_point>=300001) //300,001점 이상 아이콘10
              {echo "<img src='../img_my/level_/10.gif' align=absmiddle>";}

}

?>
g4 설치시 config.php에서 설정하는
>> $g4[table_prefix]        = "g4_"; // 테이블명 접두사

위 내용을 변경할경우 테이블명을 고정하면 위 라이브러리 파일을 인식하지 못합니다.
이 문제를 피하기 위해서 $g4 를 사용하는것인데....
참... 까만도둑님 소스에서 끌어오는 데이터를 두개 필드로 줄인 이유는,
실제 필요한 부분이 달랑 '포인트'랑 '레벨'인데도 전체를 끌어오는 낭비(?!)가 있어서
저렇게 줄였습니다.(그냥 저만의 생각이지요.)
root님 아래 소스 없어도 잘 됩니다.
========================
global $g4;
========================
아직 로그인 스킨에는 적용을 안해봐서 인지는 모르겠으나 좀 더 테스트는 해 봐야겠습니다.

그리고 나스카님의 말씀에 의하면,
"환경설정 변수를 상단 6~7라인에 기재하면, header가 두번 전송된다고 '욕'합니다^^; "
라는 쪽지가 왔네요. ㅋㅋ
해결되었습니다.
root님과 나스카님께 감사 드립니다.

제가 올린 소스를 이렇게 변경했습니다.

============================================================================
$sql = "select * from $g4[member_table] where mb_id='$mb_id'";
=>
$sql = "select mb_point, mb_level from g4_member where mb_id='$mb_id'";
==============================================================================
이런이런..
전 아웃로그인인줄 알고 다음처럼 말씀드렸던건데...
>> 그리고 스킨쪽에서 호출시에 $mb_id 안됩니다.
>> $member[mb_id] 사용하셔야 합니다.

게시판스킨은 그대로 사용하시면 될것입니다.


핵심은 function level_icon($mb_id) 에서 $g4 를 인식하지 못하므로
다음 내용을 추가해야한다는 것이었습니다.

    global $g4;
[까만도둑님 홈 참조] 게시판 리스트에 적용한 예제 입니다.
http://hyusig.com/?doc=bbs/gnuboard.php&bo_table=gnu&wr_id=20&sselect=concat(wr_subject,wr_content)&stext=포인트별&soperator=1&srch_rows=5&srch_comment=1&srch_days=0

[g4에 적용할 경우] /skin/board/basic/list.skin.php 파일 기준 118라인을 다음과 같이 변경합니다.
원본 : <td width="110" align="center" valign="middle"><font class=w_font><?=$list[$i][name]?></font></td>

수정 : <td width="110" align="center" valign="middle"><font class=w_font><?=level_icon($list[$i][mb_id])?><?=$list[$i][name]?></font></td>

g4_member 회원 테이블을 제대로 인식하지 못해서,
회원테이블 명을 직접 기재했습니다.
(CTRL-F ---> g4_member 하시면 보일 겁니당^^;)


//소스시작 (소스위치 : /extend/developer.lib.php <=== 3.xx 내용을 그대로 끌어오느라^^;)
<?
//if (defined(__FILE__)) return;
//define(__FILE__, TRUE);
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$g4_path = "..";
//include_once("$g4_path/common.php");
//include_once("$g4_path/config.php");

//포인트별 회원 아이콘 출력
function level_icon($mb_id) {

$sql = "select mb_point, mb_level from g4_member where mb_id='$mb_id'";
$result = sql_query($sql);
$data = sql_fetch_array($result);

$is_admin = is_admin($mb_id);
$ic_point = $data[mb_point];
$ic_level = $data[mb_level];//레벨별 자동아이콘. 포인트하고는 상관없는 소스임
$ic_mb_id = $data[mb_id];//특정회원 지정아이콘

if($is_admin == 'super') //최고 관리자 아이콘
              {echo "<img src=../img_my/level_/sp.gif align=absmiddle>";}
else if($ic_mb_id == 'test') //특정회원 지정아이콘
              {echo "<img src='../img_my/level_/g.gif' align=absmiddle>";}
else if(!$ic_point) //비회원 아이콘
              {echo "<img src='../img_my/level_/guest.gif' align=absmiddle>";}
else if($ic_point <= 1000) //1점 이상 1,000점 이하 아이콘1
              {echo "<img src='../img_my/level_/1.gif' align=absmiddle>";}
      else if($ic_point <= 3000) //1,001점 이상 3,000점 이하 아이콘2
              {echo "<img src='../img_my/level_/2.gif' align=absmiddle>";}
      else if($ic_point <= 7000) //3,001점 이상 7,000점 이하 아이콘3
              {echo "<img src='../img_my/level_/3.gif' align=absmiddle>";}
      else if($ic_point <= 15000) //7,001점 이상 15,000점 이하 아이콘4
              {echo "<img src='../img_my/level_/4.gif' align=absmiddle>";}
      else if($ic_point <= 30000) //15,001점 이상 30,000점 이하 아이콘5
              {echo "<img src='../img_my/level_/5.gif' align=absmiddle>";}
      else if($ic_point <= 60000) //30,001점 이상 60,000점 이하 아이콘6
              {echo "<img src='../img_my/level_/6.gif' align=absmiddle>";}
      else if($ic_point <= 100000) //60,001점 이상 100,000점 이하 아이콘7
              {echo "<img src='../img_my/level_/7.gif' align=absmiddle>";}
      else if($ic_point <= 200000) //100,001점 이상 200,000점 이하 아이콘8
              {echo "<img src='../img_my/level_/8.gif' align=absmiddle>";}
      else if($ic_point <= 300000) //200,001점 이상 300,000점 이하 아이콘9
              {echo "<img src='../img_my/level_/9.gif' align=absmiddle>";}
      else if($ic_point>=300001) //300,001점 이상 아이콘10
              {echo "<img src='../img_my/level_/10.gif' align=absmiddle>";}

}
?>
//소스 끝
네. root님 말씀이 맞습니다요^^;
저야 뭐 '일자무식'이라설랑~*
전... 아직도 '전역변수'라는 녀석이 뭐 하는지도 모른답니당~
그냥 그러려니 하고 넘어가지요.
안 되면 뭐 별수 있나요?!
막고 품어야지용~

참... 그리고, global $g4;
구문이 선언되지 않아서, g4_member 테이블을 직접 끌어 온 것이랍니다.
흐~(결정적인 무식이 뽀록나는 순간입니당~*^^*)
게시판 리스트

<?=level_icon($list[$i][mb_id])?>
=>
<?=level_icon($member[mb_id])?>

게시판 글읽기 레벨 아이콘
<?=level_icon($write[mb_id])?>
=>
<?=level_icon($write[$member[mb_id]])?>

----------------------------------------------------------
이렇게 했는데 안됩니다.
개발자 함수 지정하신 부분에 전역변수 설정이 안되서 그런것 같습니다.
function level_icon($mb_id)
{
    global $g4;      // <== 추가해보시고...

    $sql = "select * from $g4[member_table] where mb_id='$mb_id'";
    $result = sql_query($sql);
    $data = sql_fetch_array($result);

그리고 스킨쪽에서 호출시에 $mb_id 안됩니다.
$member[mb_id] 사용하셔야 합니다.

적용해보시고 다시 글올려주십시오.
© SIRSOFT
현재 페이지 제일 처음으로