링크
(0)
5개항 설문 투표를 만들어 놓고 집계 수치를 해당 $wr_id의 레코드를 update하는 함수를
/lib/폴더 아래에 함수 모음 화일에 다음과 같은 함수를 만들어 놓았습니다.
//(2012.04.09)추가 함수
//이상하게 이 함수를 게시판 실행화일에서 직접 부르면 안되고, 함수 실행문을 실행 화일에 그대로 복사해서 실행하면 되는 이유는 도데체 뭔가요.
//이럴바엔 함수로 등록해서 /lib/에 저장해 놓을 필요가 있나? 사용 페이지 마다 코드나 변수명을 고쳐야 한다면 안하고 말지 젠장.
/*
biznara.lib에서
function update_vote($wr_id, $vote)
{
global $config;
global $board;
global $g4;
global $is_admin;
$sql = " select sum(bv_count) as vote_sum, count(bv_count) as vote_count
from {$g4['board_vote_table']} where wr_id = '$wr_id'
and bo_table = '$bo_table' and bv_flag = '$vote' ";
$row = sql_fetch($sql);
$vote_sum = $row[vote_sum];
$vote_count = $row[vote_count];
$sql = " update {$g4['write_prefix']}{$board[bo_table]}
set wr_{$vote} = '$vote_sum' where wr_id = '$wr_id' ";
sql_query($sql);
}
*/
그 다음은 투표이벤트가 발생했을시 실행되는
bbs/vote.php화일에서의 실행문입니다.
// 집계표 update
//update_vote($wr_id, $vote); <=== 이 함수가 실행이 안되어서 여기다 함수내 실행문을 직접 복사해 넣음.
$sql = " select sum(bv_count) as vote_sum, count(bv_count) as vote_count
from {$g4['board_vote_table']} where wr_id = '$wr_id'
and bo_table = '$bo_table'
and bv_flag = '$vote' ";
$row = sql_fetch($sql);
$vote_sum = $row[vote_sum];
$vote_count = $row[vote_count];
$sql = " update {$g4['write_prefix']}{$board[bo_table]}
set wr_{$vote} = '$vote_sum' where wr_id = '$wr_id' ";
<== 함수를 불러 오면 특히 여기 sql문이 stop
sql_query($sql);
그 이유를 설명해 주실 수 있는 분 계십니까?
그냥 이대로 넘어가도 되겠지만 이것 때문에 한참을 헤맸으니 울화가 치밀어 그 이유를 알고 싶기도 하고 또 제가 원래 기초가 없는 사람이라 기초 지식을 배울 겸해서 질문 드립니다.
참고로 현재 사이트는 www.biz-nara.com 이고 비회원도 글쓰기가 가능토록 임시로 열어 놨으니 사이트에 직접 들어 오셔서 확인해도 됩니다.
/lib/폴더 아래에 함수 모음 화일에 다음과 같은 함수를 만들어 놓았습니다.
//(2012.04.09)추가 함수
//이상하게 이 함수를 게시판 실행화일에서 직접 부르면 안되고, 함수 실행문을 실행 화일에 그대로 복사해서 실행하면 되는 이유는 도데체 뭔가요.
//이럴바엔 함수로 등록해서 /lib/에 저장해 놓을 필요가 있나? 사용 페이지 마다 코드나 변수명을 고쳐야 한다면 안하고 말지 젠장.
/*
biznara.lib에서
function update_vote($wr_id, $vote)
{
global $config;
global $board;
global $g4;
global $is_admin;
$sql = " select sum(bv_count) as vote_sum, count(bv_count) as vote_count
from {$g4['board_vote_table']} where wr_id = '$wr_id'
and bo_table = '$bo_table' and bv_flag = '$vote' ";
$row = sql_fetch($sql);
$vote_sum = $row[vote_sum];
$vote_count = $row[vote_count];
$sql = " update {$g4['write_prefix']}{$board[bo_table]}
set wr_{$vote} = '$vote_sum' where wr_id = '$wr_id' ";
sql_query($sql);
}
*/
그 다음은 투표이벤트가 발생했을시 실행되는
bbs/vote.php화일에서의 실행문입니다.
// 집계표 update
//update_vote($wr_id, $vote); <=== 이 함수가 실행이 안되어서 여기다 함수내 실행문을 직접 복사해 넣음.
$sql = " select sum(bv_count) as vote_sum, count(bv_count) as vote_count
from {$g4['board_vote_table']} where wr_id = '$wr_id'
and bo_table = '$bo_table'
and bv_flag = '$vote' ";
$row = sql_fetch($sql);
$vote_sum = $row[vote_sum];
$vote_count = $row[vote_count];
$sql = " update {$g4['write_prefix']}{$board[bo_table]}
set wr_{$vote} = '$vote_sum' where wr_id = '$wr_id' ";
<== 함수를 불러 오면 특히 여기 sql문이 stop
sql_query($sql);
그 이유를 설명해 주실 수 있는 분 계십니까?
그냥 이대로 넘어가도 되겠지만 이것 때문에 한참을 헤맸으니 울화가 치밀어 그 이유를 알고 싶기도 하고 또 제가 원래 기초가 없는 사람이라 기초 지식을 배울 겸해서 질문 드립니다.
참고로 현재 사이트는 www.biz-nara.com 이고 비회원도 글쓰기가 가능토록 임시로 열어 놨으니 사이트에 직접 들어 오셔서 확인해도 됩니다.
댓글 4개
전진님의 설명으로 감을 잡았습니다.
함수내 변수를 $bo_table대신 {$board[bo_table]}로 바꿔보니 딱 되는군요.
또한 덕분에 parameter에 대한 기초 개념이 이제사 싹 들어 왔습니다. 그동안 함수내에서 어떤 것은 {}로 옷을 입히고 어떤 것은 {}없이 벌거벗은 채로 그냥 불러들이는 경우게 있었는데 도대체 그 차이는 뭔가 혼자 고민했었는데 바로 파라미터(국산말로 '매개변수')냐 아니냐 차이였군요.
파라미터라는 말도 책 설명으로는 딱 감이 안오던데 이제 보니 어떤 작업을 하기 위한 '원료'(인자)를 담는 그릇에 해당되는 군요. ('빵 제조' 함수가 있다면 '밀가루'와 '물'과 '이스트'가 있어야 하듯이) 그게 있어야 어떤 결과물이 나올 테니까요. 최초 이 용어를 지어낸 사람이 'parameter'라 하지 말고 'materials'했었으면 덜 헤맸을텐데.
감사합니다.
함수내 변수를 $bo_table대신 {$board[bo_table]}로 바꿔보니 딱 되는군요.
또한 덕분에 parameter에 대한 기초 개념이 이제사 싹 들어 왔습니다. 그동안 함수내에서 어떤 것은 {}로 옷을 입히고 어떤 것은 {}없이 벌거벗은 채로 그냥 불러들이는 경우게 있었는데 도대체 그 차이는 뭔가 혼자 고민했었는데 바로 파라미터(국산말로 '매개변수')냐 아니냐 차이였군요.
파라미터라는 말도 책 설명으로는 딱 감이 안오던데 이제 보니 어떤 작업을 하기 위한 '원료'(인자)를 담는 그릇에 해당되는 군요. ('빵 제조' 함수가 있다면 '밀가루'와 '물'과 '이스트'가 있어야 하듯이) 그게 있어야 어떤 결과물이 나올 테니까요. 최초 이 용어를 지어낸 사람이 'parameter'라 하지 말고 'materials'했었으면 덜 헤맸을텐데.
감사합니다.
아.. 제 콩글리쉬때문에 헷갈리셨네요. 죄송합니다. ^^;
정식 명칭은 함수 인자 (function argument) 일것입니다. 뭐 대부분 혼용해서 사용하지만요..
굳이 비교하자면, 함수 인자는 빵을 만드는 재료도 해당되겠지만, 대부분 빵재료는 (global 변수등의) 다른 방법으로 주어지고 함수 인자는, 그 빵을 만드는 여러 옵션 (빵 굽는 온도, 시간 등)을 담당하는 경우가 많습니다.
위 예에서도, 재료에 해당하는 것은 디비에 들어있는 정보 (투표수) 일테고, 함수인자는 어떤 정보($wr_id)를 꺼내서 어느 칸(wr_$vote)에 넣을지 조정하는 역할을 하고요. ^^;
그리고 {}있고 없고 차이는, 함수 인자때문은 아니고요,
{}안에 php 변수 ($로 시작하는 문자) 를 넣어서 그 값을 얻어낼때 (evaluation) 사용됩니다.
특히 문자열, 예를 들어 디비 쿼리 (database query) 같은 문자열 안에 넣을때 사용합니다.
간단한 경우 (보통 변수나 단일배열)에는 사용하지 않아도 됩니다.
그러나 다중배열변수의 값 ($로 시작되고 뒤에 두개 이상의 []가 붙는 경우) 인 경우는, 원래대로 {}로 감싸줘야 합니다. 그리고 배열의 문자필드명 ([]사이에 들어가는 숫자가 아닌 이름) 은 ' ' (작은 따옴표)로 감싸야 합니다. 규칙이 쉽지 않기에, 단순변수가 아니면 우선 {}와 '' 를 붙여주는 것이 안전합니다.
또는, 문자열 밖으로 내보내는 방법도 있습니다.
예를들어,
$sql = " select sum(bv_count) as vote_sum, count(bv_count) as vote_count
from {$g4['board_vote_table']} where wr_id = '$wr_id'
and bo_table = '$bo_table'
and bv_flag = '$vote' ";
에서 {$g4['board_vote_table']} 의 경우가 거기에 해당합니다. ^^
정식 명칭은 함수 인자 (function argument) 일것입니다. 뭐 대부분 혼용해서 사용하지만요..
굳이 비교하자면, 함수 인자는 빵을 만드는 재료도 해당되겠지만, 대부분 빵재료는 (global 변수등의) 다른 방법으로 주어지고 함수 인자는, 그 빵을 만드는 여러 옵션 (빵 굽는 온도, 시간 등)을 담당하는 경우가 많습니다.
위 예에서도, 재료에 해당하는 것은 디비에 들어있는 정보 (투표수) 일테고, 함수인자는 어떤 정보($wr_id)를 꺼내서 어느 칸(wr_$vote)에 넣을지 조정하는 역할을 하고요. ^^;
그리고 {}있고 없고 차이는, 함수 인자때문은 아니고요,
{}안에 php 변수 ($로 시작하는 문자) 를 넣어서 그 값을 얻어낼때 (evaluation) 사용됩니다.
특히 문자열, 예를 들어 디비 쿼리 (database query) 같은 문자열 안에 넣을때 사용합니다.
간단한 경우 (보통 변수나 단일배열)에는 사용하지 않아도 됩니다.
그러나 다중배열변수의 값 ($로 시작되고 뒤에 두개 이상의 []가 붙는 경우) 인 경우는, 원래대로 {}로 감싸줘야 합니다. 그리고 배열의 문자필드명 ([]사이에 들어가는 숫자가 아닌 이름) 은 ' ' (작은 따옴표)로 감싸야 합니다. 규칙이 쉽지 않기에, 단순변수가 아니면 우선 {}와 '' 를 붙여주는 것이 안전합니다.
또는, 문자열 밖으로 내보내는 방법도 있습니다.
예를들어,
$sql = " select sum(bv_count) as vote_sum, count(bv_count) as vote_count
from {$g4['board_vote_table']} where wr_id = '$wr_id'
and bo_table = '$bo_table'
and bv_flag = '$vote' ";
에서 {$g4['board_vote_table']} 의 경우가 거기에 해당합니다. ^^
게시글 목록
| 번호 | 제목 |
|---|---|
| 284438 | |
| 284437 | |
| 284435 | |
| 284430 | |
| 284420 | |
| 284417 | |
| 284409 | |
| 284401 | |
| 284399 | |
| 284397 | |
| 284380 | |
| 284378 | |
| 284371 | |
| 284370 | |
| 284366 | |
| 284364 | |
| 284360 | |
| 284357 | |
| 284355 | |
| 284354 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기