list.skin.php에서 > 그누4 질문답변

그누4 질문답변

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

list.skin.php에서 정보

list.skin.php에서

본문

list.skin.php 맨위쪽에 아래와 같은 구문을 넣어서 ...
게시판환경설정의 bo_1 ~ bo_3 까지 필드값이 비어있는경우,
- 구문02의 경고창을 실행후, 구문01을 실행하도록 되어 있습니다
  (구문01을 먼저 실행하면 구문02가 실행안되서 아래와 같이 거꾸로 배열됨)


문제는 bo_2 또는 bo_1의 관련 필드값이 비어있는경우...

구문2의 case($k == 'bo_1'):    또는    case($k == 'bo_2'):    부분이 실행되고 구문 01이 실행되어야 하는데

bo_1, bo_2, bo_3 어떤 필드값이 비어있던지 간에 무조건 case($k == 'bo_1'):    의 alert값만 실행됩니다
대신 구문 01을 실행하면서는 비어있는 해당값은 정상입력 처리되고요~

★ 비어있는 값만 확인하여 구문02의 해당부분만 실행하고 싶은데 어디가 잘못된 것인지요???


----------------------------------- 관련 내용 ---------------------------------------

★★★★★★★★★★ 구문 01

if (($board[bo_1_subj] != "리스트 이미지보기") || !$board[bo_1]) {
sql_query("update $g4[board_table] set bo_1_subj='리스트 이미지보기', bo_1='1' where bo_table='$bo_table'", false);
    $board = sql_fetch("select $g4[board_table] where bo_table='$bo_table'", false);
}

if (($board[bo_2_subj] != "새창보기옵션") || !$board[bo_2]) {
sql_query("update $g4[board_table] set bo_2_subj='새창보기옵션', bo_2='1' where bo_table='$bo_table'", false);
    $board = sql_fetch("select $g4[board_table] where bo_table='$bo_table'", false);
}

if (($board[bo_3_subj] != "썸네일설정 가로|세로") || !$board[bo_3]) {
sql_query("update $g4[board_table] set bo_3_subj='썸네일설정 가로|세로', bo_3='150|110' where bo_table='$bo_table'", false);
    $board = sql_fetch("select $g4[board_table] where bo_table='$bo_table'", false);
}


★★★★★★★★★★ 구문 02

switch($board[$k]) {

case($k == 'bo_1'):
alert("리스트 이미지보기 : 리스트화면의 썸네일 or 원본이미지보기 설정\\n\\n ★ 여유필드1 에 숫자를 입력하세요(숫자 1,2,3중 선택입력) \\n\\n 1 : 일반이미지 View (NO 썸네일) \\n 2 : 썸네일 1개생성및 View \\n 3 : 썸네일 2개생성및 View ", $admin_href);
break;

case($k == 'bo_2'):
alert("새창보기옵션 : 리스트화면의 링크방법에 따른 이미지 새창보기설정을 위해 \'여분필드 2\'에  숫자를 입력해주세요\\n\\n ★ 여유필드2 설정방법(숫자 1,2,3,4중 선택입력) \\n\\n 1 : 이미지:뷰화면에서 보기 | 제목글:뷰화면으로 이동 \\n 2 : 이미지:새창으로 보기 | 제목글:뷰화면으로 이동 \\n 3 : 모두 새창으로 보기 \\n 4 : 클릭안됨  \\n\\n 기타 임의의 숫자를 사용할경우, 리스트상에서 모두 클릭안됨", $admin_href);
break;

case($k == 'bo_3'):
alert("썸네일설정 가로|세로: 뷰화면의 이미지크기를 설정해주세요", $admin_href);
break;

  }

----------------------------------- ---------------------------------------

댓글 전체

if (($board[bo_1_subj] != "리스트 이미지보기") || !$board[bo_1]) {
sql_query("update $g4[board_table] set bo_1_subj='리스트 이미지보기', bo_1='1' where bo_table='$bo_table'", false);
    $bk  = 'bo_1';
}

if (($board[bo_2_subj] != "새창보기옵션") || !$board[bo_2]) {
sql_query("update $g4[board_table] set bo_2_subj='새창보기옵션', bo_2='1' where bo_table='$bo_table'", false);
    $bk = 'bo_2';
}

if (($board[bo_3_subj] != "썸네일설정 가로|세로") || !$board[bo_3]) {
sql_query("update $g4[board_table] set bo_3_subj='썸네일설정 가로|세로', bo_3='150|110' where bo_table='$bo_table'", false);
  $bk = 'bo_3';
}

switch($bk){

case($bk == 'bo_1'):
alert("리스트 이미지보기 : 리스트화면의 썸네일 or 원본이미지보기 설정\\n\\n ★ 여유필드1 에 숫자를 입력하세요(숫자 1,2,3중 선택입력) \\n\\n 1 : 일반이미지 View (NO 썸네일) \\n 2 : 썸네일 1개생성및 View \\n 3 : 썸네일 2개생성및 View ", $admin_href);
break;

case($bk == 'bo_2'):
alert("새창보기옵션 : 리스트화면의 링크방법에 따른 이미지 새창보기설정을 위해 \'여분필드 2\'에  숫자를 입력해주세요\\n\\n ★ 여유필드2 설정방법(숫자 1,2,3,4중 선택입력) \\n\\n 1 : 이미지:뷰화면에서 보기 | 제목글:뷰화면으로 이동 \\n 2 : 이미지:새창으로 보기 | 제목글:뷰화면으로 이동 \\n 3 : 모두 새창으로 보기 \\n 4 : 클릭안됨  \\n\\n 기타 임의의 숫자를 사용할경우, 리스트상에서 모두 클릭안됨", $admin_href);
break;

case($bk == 'bo_3'):
alert("썸네일설정 가로|세로: 뷰화면의 이미지크기를 설정해주세요", $admin_href);
break;

  }

// 오타는 있을 수 있네요.

구문1 에서 값이 없는 경우에 이미 기본값을 입력하네요.

$board = sql_fetch("select $g4[board_table] where bo_table='$bo_table'", false);
=>
$board = sql_fetch("select *  $g4[board_table] where bo_table='$bo_table'", false);

다시 값을 뽑아 내시는 건가요?
구문01 이 실행되면 값이 없을 경우에 디비에 기본값을 입력되도록 해버리기 때문에,

구문02가 실행될 경우는 전혀 발생하지 않습니다.

그나마 구분02가 샐행되는 경우는

$board = sql_fetch("select $g4[board_table] where bo_table='$bo_table'", false);

가 에러를 내는데 뒤에 false가 에러를 출력하지 말도록 했기때문에, 그냥 넘어가는 것 뿐이지,

$board = sql_fetch("select * $g4[board_table] where bo_table='$bo_table'", false);

이렇게 정상적으로 작동 햇다면

구문1에서 값이 없으면 디비에 기본 값으로 저장하고, 다시 $board 값을 만들어 내기 때문에,

구문2는 실행되지 않습니다.

구문2에서 입력된 alert(''''') 를 구문1에 넣으셔야 합니다만,

기본적으로 alert를 띄우는 것을 싫어하죠.

if (($board[bo_1_subj] != "리스트 이미지보기") || !$board[bo_1]) {
sql_query("update $g4[board_table] set bo_1_subj='리스트 이미지보기', bo_1='1' where bo_table='$bo_table'", false);
    $board = sql_fetch("select * $g4[board_table] where bo_table='$bo_table'", false);
  alert("리스트 이미지보기 : 리스트화면의 썸네일 or 원본이미지보기 설정\\n\\n ★ 여유필드1 에 숫자를 입력하세요(숫자 1,2,3중 선택입력) \\n\\n 1 : 일반이미지 View (NO 썸네일) \\n 2 : 썸네일 1개생성및 View \\n 3 : 썸네일 2개생성및 View ", $admin_href);

}

이런형태로 2개를 합쳐야 하죠. 근데 구문1만 완성하시는게 도움이 될듯 합니다

alert띄우서 다른 데로 보내봐야 좋지 못한 로직인듯요.
아~~ 대단히 감사합니다. 일단 해보니 잘되는군요 ^^

 
----------- 죄송 {이부분은 제가 글을 지우고 쓰는동안 댓글이 달렸네요 ^^ ;; 감사~~ ---------
네 그렇습니다.
초기설정시에 값이 비어있는경우와 그리고 값이 비어있는경우 일단 게시판환경설정으로 돌아가면서
비어있는 값에는 초기설정값을 지정해주도록 했습니다 (구체적인 로직이 안만들어져서리 -_- ;;)
---------------------------------------------------------------------------------------

보시면 한가지만 더 부탁드리겠습니다 ^^;;

현재 값이 비어있는경우, 되돌아 가면서 기본값도 입력해주고 경고창도 원했던 방식으로 잘 처리됩니다
그런데, 게시판 생성후, 초기설정후, bo_1 bo_2 bo_3 모두가 전체적으로 값이 비어있을때는
리스트화면으로 가면 bo_3의 경고창이 실행되는데...

이때...'게시판환경 옵션의 초기값을 설정하세요' 라는 경고관련 구문을 하나더 추가하려면
어떻게 해야할런지요..
$false_index= 0;
if (($board[bo_1_subj] != "리스트 이미지보기") || !$board[bo_1]) {
..
 $false_index++;
}

..
if($board[bo_3] == false){
 ..
 $false_index ++;
}

if($false_index  == 3){
 echo "
  <script>
    alert('게시판 환경 옵션의 초기값을 설정하세요');
    location.href='".$admin_href."';
  </script>
  ";
  exit;
 
}

이건가요? 아니면 밑에 있는 경고 문구만 말씀하시나요?
case($k == 'bo_1'):    //이건 틀린거구요

case($k == 'bo_1');    //이게 맞습니다.  : 이게  ; 이걸로... (혹시 오타이신지.)



그리고 스위치문에서 k값을 비교하는거면..

switch($k){
  case 'bo_1'; 코드 break;
  case 'bo_2'; 코드 break;
  case 'bo_3'; 코드 break;
}


이렇게 하는게 맞지 않나 싶구요.
하지만 질문내용이나 코드를 봐서는 스위치문보다는 다른방법으로 하는게 좋을 듯 싶어서
아래 코드를 적어봅니다...

==========
$error1=false;
$error2=false;
$error3=false;

if (($board[bo_1_subj] != "리스트 이미지보기") || !$board[bo_1]) {
코드

$error1='★ 오류내용';
}

if (($board[bo_2_subj] != "새창보기옵션") || !$board[bo_2]) {
코드

$error2='\\n\\n★ 오류내용';
}

if (($board[bo_3_subj] != "썸네일설정 가로|세로") || !$board[bo_3]) {
코드

$error3='\\n\\n★ 오류내용';
}

//$error1, $error2, $error3 중하나라도 참이면 오류창 출력
if($error1 || $error2 || $error3){
  alert($error1.$error2.$error3, $admin_href);
}



======================
위에처럼 하면 db업데이트 후 오류창을 띄우게 됩니다.
테스트를 완료한후, 글을 올려야 되는데 번거롭게 시간을 뺏은듯 합니다. 죄송하구요
.................. 모두 해결되었습니다 ^^;;

위에 언급해주신 내용을 토대로 해서  권고해주신대로 구문01만으로 완성했습니다
비어있는 값을 차례대로 확인해서 기본값을 입력하는 방식으로 하니까
하나씩 확인이 되면서 처리되는게 오히려 이렇게 하는게 나을수도 있는거 같군요 ^^;;


정말 대.단.히 감사드립니다.
며칠동안 올린 질문글중에 제일 확실한 답변을 얻은듯 합니다 포인트를 많이 드렸어야 했는데 ^^ 감사합니다
복받으시고 즐거운 주말 되십시요 꾸벅~


<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

//if (!function_exists("imagecopyresampled")) alert("GD 2.0.1 이상 버전이 설치되어 있어야 사용할 수 있는 갤러리 게시판 입니다.", $admin_href);

// 게시판 환경 - 기본값 설정 : bo_1 / bo_2 / bo_3 bo_4 미설정시 기본값지정
if (($board[bo_1_subj] != "리스트 이미지보기") || !$board[bo_1]) {
sql_query("update $g4[board_table] set bo_1_subj='리스트 이미지보기', bo_1='1' where bo_table='$bo_table'", false);
alert("리스트 이미지보기 : 리스트화면의 썸네일 or 원본이미지보기 설정\\n\\n ★ 여유필드1 에 숫자를 입력하세요(숫자 1,2,3중 선택입력) \\n\\n 1 : 일반이미지 View (NO 썸네일) \\n 2 : 썸네일 1개생성및 View \\n 3 : 썸네일 2개생성및 View ", $admin_href);
}

if (($board[bo_2_subj] != "새창보기옵션") || !$board[bo_2]) {
sql_query("update $g4[board_table] set bo_2_subj='새창보기옵션', bo_2='1' where bo_table='$bo_table'", false);
alert("새창보기옵션 : 리스트화면의 링크방법에 따른 이미지 새창보기설정을 위해 \'여분필드 2\'에  숫자를 입력해주세요\\n\\n ★ 여유필드2 설정방법(숫자 1,2,3,4중 선택입력) \\n\\n 1 : 이미지:뷰화면에서 보기 | 제목글:뷰화면으로 이동 \\n 2 : 이미지:새창으로 보기 | 제목글:뷰화면으로 이동 \\n 3 : 모두 새창으로 보기 \\n 4 : 클릭안됨  \\n\\n 기타 임의의 숫자를 사용할경우, 리스트상에서 모두 클릭안됨", $admin_href);
}

if (($board[bo_3_subj] != "썸네일설정 가로|세로") || !$board[bo_3]) {
sql_query("update $g4[board_table] set bo_3_subj='썸네일설정 가로|세로', bo_3='150|110' where bo_table='$bo_table'", false);
alert("썸네일설정 가로|세로: 뷰화면의 이미지크기를 설정해주세요", $admin_href);
}

?>
^^;

function alert($msg, $url=''){
  $login_url = $url ? "" : "location.href='$url''";
  echo "
  <script>
    alert('$msg');
    $url;
  </script>
  ";
}


형태 입니다.

일반 유저들에게는 alert()를 보여줄 필요가 없죠

if($member['mb_level'] == 10){
  alert(........);
}


하시거나,

<script>alert();</script>;


보다는

if($member['mb_level'] == 10){
  echo "<span> 기본설정으로 변경했습니다.</span>";
}

를 이용하시는 것도 디버깅을 위한 하나의 방법일듯 합니다.
갈수록 어려워지는군요..ㅋ~ ^^.. '자스'는 완전히 젬병의 실력이라서 ^^ ...
말씀하신대로 디버깅차원에서는 필요하지만
게시판환경설정자체가 관리자 권한이라서 레벨지정은 큰 의미는 없지 않나 싶기도 합니다


다만 ...

function alert($msg, $url=''){
  $login_url = $url ? "" : "location.href='$url''";
  echo "
  <script>
    alert('$msg');
    $url;
  </script>
  ";
}

이 함수는 좀 어렵긴 하지만..^^ 코드 줄이는데 도움이 될거 같습니다.
한번 응용해보도록 하죠... 감사~
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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