wr_num 관련 소스 질문 정보
그누보드 wr_num 관련 소스 질문
본문
결국 원하는 답변이 없길래 이것저것 다 뒤져보다가 의심가는 부분을 한군데 찾았습니다.
gnuboard.lib.php 파일에 있는 내용인데요.
// 게시판의 다음글 번호를 얻는다.
function get_next_num($table, $notice=0)
{
// 공지사항일 경우 공지사항에서 가장 작은 번호를 얻고
if ($notice == -1) {
$sql1 = " select min(wr_num) from $table where wr_notice = '-1' ";
$row1 = sql_fetch($sql1);
}
// 공지사항이 아닌글에서 가장 작은 번호를 얻어
$sql2 = " select min(wr_num) from $table where wr_notice = '0' ";
$row2 = sql_fetch($sql2);
// 비교하여 작은 수에서 1 뺀 값을 반환
if ((int)$row1[0] < (int)$row2[0]) {
return ((int)$row1[0] - 1);
} else {
return ((int)$row2[0] - 1);
}
}
이렇게 되어 있지요.
재미있는 것은 공지사항일 경우엔 제대로 비교가 되지만 공지글 후 새로 일반글을 쓰게 되면 비교할 때 일반글들 중에서만 wr_num 을 뽑아와서 비교를 하기 때문에 반드시 숫자 하나는 겹치는 wr_num 이 생기는 것 같습니다.
무슨 소리냐하면 기존에 마지막 글의 wr_num 이 -5 라 가정하면 공지글을 새로 쓸 때는 제대로 -6 이 먹히겠지만 그 이후 일반글을 새로 쓰게 될 때는 공지사항중 마지막 -6 번을 체크하지 않고 -5 번 글에서 체크를 하기 때문에 다시 -6 이 들어가게 되는 것입니다. (위의 소스를 제가 제대로 이해한 거라면 그렇게 되겠지요. 상황은 맞아떨어지는데 헤헤;;)
어설프게 뻐긴 것처럼 이야기 했는데 어쨌든 이 부분을 고쳐야 루트님의 팁(관련글 같이표시하기)에서 문제가 없을 것 같은데요.
==본격적인 질문입니다.==
1. wr_num은 리스트용 넘버로 알고 있는데 그렇다면 굳이 위와 같이 따로 검사할 이유가 없지 않나요?
2. 저는 저 부분을 비교구문 없이 막바로 가장 작은 수를 찾아서 들어가도록 하고 싶은데 어떻게 고쳐야 할까요?
3. 2번의 내용처럼 고쳤을 경우 문제가 생길 가능성이 있을까요?
gnuboard.lib.php 파일에 있는 내용인데요.
// 게시판의 다음글 번호를 얻는다.
function get_next_num($table, $notice=0)
{
// 공지사항일 경우 공지사항에서 가장 작은 번호를 얻고
if ($notice == -1) {
$sql1 = " select min(wr_num) from $table where wr_notice = '-1' ";
$row1 = sql_fetch($sql1);
}
// 공지사항이 아닌글에서 가장 작은 번호를 얻어
$sql2 = " select min(wr_num) from $table where wr_notice = '0' ";
$row2 = sql_fetch($sql2);
// 비교하여 작은 수에서 1 뺀 값을 반환
if ((int)$row1[0] < (int)$row2[0]) {
return ((int)$row1[0] - 1);
} else {
return ((int)$row2[0] - 1);
}
}
이렇게 되어 있지요.
재미있는 것은 공지사항일 경우엔 제대로 비교가 되지만 공지글 후 새로 일반글을 쓰게 되면 비교할 때 일반글들 중에서만 wr_num 을 뽑아와서 비교를 하기 때문에 반드시 숫자 하나는 겹치는 wr_num 이 생기는 것 같습니다.
무슨 소리냐하면 기존에 마지막 글의 wr_num 이 -5 라 가정하면 공지글을 새로 쓸 때는 제대로 -6 이 먹히겠지만 그 이후 일반글을 새로 쓰게 될 때는 공지사항중 마지막 -6 번을 체크하지 않고 -5 번 글에서 체크를 하기 때문에 다시 -6 이 들어가게 되는 것입니다. (위의 소스를 제가 제대로 이해한 거라면 그렇게 되겠지요. 상황은 맞아떨어지는데 헤헤;;)
어설프게 뻐긴 것처럼 이야기 했는데 어쨌든 이 부분을 고쳐야 루트님의 팁(관련글 같이표시하기)에서 문제가 없을 것 같은데요.
==본격적인 질문입니다.==
1. wr_num은 리스트용 넘버로 알고 있는데 그렇다면 굳이 위와 같이 따로 검사할 이유가 없지 않나요?
2. 저는 저 부분을 비교구문 없이 막바로 가장 작은 수를 찾아서 들어가도록 하고 싶은데 어떻게 고쳐야 할까요?
3. 2번의 내용처럼 고쳤을 경우 문제가 생길 가능성이 있을까요?
댓글 전체
그런 방법으로 하면 페이지에 표시에는 문제가 없겠네요. 오호... 감사! (잠수신공 깨서 죄송합니다. ㅎㅎㅎ) 그런데 운영자님께서 저부분에 대한 설명을 해주셨으면 하는데 요즘 바쁘신지 아니면 답변달 문제가 아닌지 안달아주시네요.
완두콩님 좋은 밤 되세요~ ^_^
완두콩님 좋은 밤 되세요~ ^_^
1,2,3 모두 제겐 어렵네요...
(참고 정도나 되려나.. )
root님의 http://sir.co.kr/?doc=bbs/gnuboard.php&bo_table=tiptech&wr_id=4082 에서요...
맨앞부분 sql 문장 만들때, 공지글은 아예 가져오지 않게 하면 어떨까요?
where wr_num = '$write[wr_num]' and wr_comment = 0 <- 이렇게 된걸
where wr_num = '$write[wr_num]' and wr_comment = 0 and wr_notice = 0 <- 이렇게요...
보통 공지글엔 답변 안달리게 되어있고,
wr_num 이 달리는건 위에 설명하셨듯 공지글이냐, 공지글이 아니냐만 구분하는 듯 보이니까요...
위에 설명하신 상황으로만 "대충" 테스트 해보니, "대충" 되어보이긴 한데요...
( 디비스키마는 너무 어려버 ㅠㅜ)
----------------------------------------------------------------------
저런식으로 디비 구성한데는 뭔가 심오한 뜻이 있을수 도 있지 않을까... 하는 생각이 드는데요.
'리스트용 넘버(?)' 만으로만 본다면 좀 헷갈리게 되어있긴한데요,
이것저것 덧붙여서 생각하면, 무언가가 있을지도....
(어쩌면 그누 속도의 비밀이-_-a;;;)
'게시판 디비 구조' 라는 유혹에, 잔뜩 물오른 '잠수신공'이 깨어지네요...
(참고 정도나 되려나.. )
root님의 http://sir.co.kr/?doc=bbs/gnuboard.php&bo_table=tiptech&wr_id=4082 에서요...
맨앞부분 sql 문장 만들때, 공지글은 아예 가져오지 않게 하면 어떨까요?
where wr_num = '$write[wr_num]' and wr_comment = 0 <- 이렇게 된걸
where wr_num = '$write[wr_num]' and wr_comment = 0 and wr_notice = 0 <- 이렇게요...
보통 공지글엔 답변 안달리게 되어있고,
wr_num 이 달리는건 위에 설명하셨듯 공지글이냐, 공지글이 아니냐만 구분하는 듯 보이니까요...
위에 설명하신 상황으로만 "대충" 테스트 해보니, "대충" 되어보이긴 한데요...
( 디비스키마는 너무 어려버 ㅠㅜ)
----------------------------------------------------------------------
저런식으로 디비 구성한데는 뭔가 심오한 뜻이 있을수 도 있지 않을까... 하는 생각이 드는데요.
'리스트용 넘버(?)' 만으로만 본다면 좀 헷갈리게 되어있긴한데요,
이것저것 덧붙여서 생각하면, 무언가가 있을지도....
(어쩌면 그누 속도의 비밀이-_-a;;;)
'게시판 디비 구조' 라는 유혹에, 잔뜩 물오른 '잠수신공'이 깨어지네요...
이 부분은 정말 포기해야할까요. -_-a; 도와주시는 분이 없네요. ㅎㅎ