[게시판접근권한]정렬이 안됩니다. > 그누4 질문답변

그누4 질문답변

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

[게시판접근권한]정렬이 안됩니다. 정보

[게시판접근권한]정렬이 안됩니다.

본문

===================
질문
===================
목록에서 읽기 쓰기 등을 클릭하면 정렬이 되어야 하는데 오류가 납니다.
 
너무 쿼리를 몰라서 정중히 질문드립니다.
 
혼자서 해결하려고 했으나 크나큰 장벽에 부딪혀 무진장 좌절하고 있습니다.
모진 풍파를 헤치고 나아갈 항해사가 되어 줄 고수님들의 조언을 듣고 싶습니다.
 
포인트를 얼마를 걸어야 할지 몰라서 그냥 1004(천사)포인트 걸었습니다.
 
 
===================
문제해결시 좋은점
===================

정렬이 되면 접근권한을 한눈에 체계적으로
관리할 수 있어 편해질 듯 싶군요.
 
 
===================
참고자료 및 사용소스
===================
까만도둑님의 게시판 접근권한 팁 http://sir.co.kr/bbs/tb.php/g4_tiptech/776
플록님의 게시판별 접근권한 팁 http://sir.co.kr/bbs/tb.php/g4_tiptech/1103
 
팁을 공개해 주신 두분께 진심으로 감사드립니다.
 
 
===================
오류 내용 中
===================
select count(*) as cnt from g4_member where (1) order by bo_list_level asc
1054 : Unknown column 'bo_list_level' in 'order clause'
error file : /young/access/access.php
 
오류 내용을 보시면 아시겠지만 아래 첨부한 소스를 access.php파일로 만들어
그누보드가 설치된 상위폴더인 access에 넣어서 include해서 실행했습니다.
 
 
참고로 소스 앞부분에 있는 다음 구문은
 
//if (!$sst) {
$sst= "a.bo_subject, a.gr_id";
$sod = "asc";
//}
 
$sst가 오류가 나서 주석처리했습니다.
 
 
==========================================================
Source / 아래는 제가 적용한 게시판별 권한보기 전체소스입니다.
==========================================================
 
<?
$g4_path = "..";//개인에 맞게 수정
include_once("$g4_path/common.php");
include_once("$g4[path]/head.php");
$g4[title] = "게시판별 접근권한 안내";
$sql_common = " from $g4[board_table] a where (1) and bo_use_search = '1' ";
//$sql_common = " from $g4[board_table] a where (1) ";
$sql = " select count(*) as cnt $sql_common";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$sql = " select * $sql_common";
$result = sql_query($sql);
//if (!$sst) {
$sst= "a.bo_subject, a.gr_id";
$sod = "asc";
//}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
//$rows = $config[cf_page_rows];
$rows = 15;
$total_page= ceil($total_count / $rows);// 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]'>처음</a>";
$colspan = 27;
?>
<style>
.tbline1  { border-top: 1px solid #D7D7D7; border-left: 1px solid #D7D7D7; }
.tbline2  { border-right: 1px solid #D7D7D7; border-bottom: 1px solid #D7D7D7; }
</style>
<script language='javascript'>
var list_update_php = '<?=$g4[admin_path]?>/board_list_update.php';
var list_delete_php = '<?=$g4[admin_path]?>/board_list_delete.php';
</script>
<table width="680" cellpadding="5" cellspacing="0">
<tr><td height='30'><?=$g4[title]?></td><td align="right">[게시판수 : <?=number_format($total_count)?>개]</td></tr>
<tr><td height='1' colspan='2' bgcolor="#999999"></td></tr>
</table>
<table width='100%' height='30' cellpadding='0' cellspacing='0' border='0' class=''>
<form name='fsearch' method='get'>
<tr> 
<td width='100%' align='right'><select name='sfl' class='category'>
<option value='bo_admin'> 관리자 </option>
<option value='bo_skin'> 스킨 </option>
<option value='bo_subject'> 제목 </option>
<option value='bo_table' selected> 테이블 </option></select>
<input class='input' type='text' name='stx' size='15' required itemname='검색어' value='<?=$stx?>'>
<input onfocus='blur()' style='cursor:hand;' type='image' src='<?=$g4[admin_path]?>/img/btn_search.gif' align='absmiddle' border=0 title='검색'></td>
</tr></form></table>
<table width="680" cellpadding="0" cellspacing="0" class="tbline1">
<colgroup width='150'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<? if ($is_admin == "super" || $is_auth) { ?>
<colgroup width='100'>
<colgroup width='60'>
<? } ?>
<tr height='35' align='center' class='subject'>
<td class="tbline2" align='center'><?=subject_sort_link('bo_subject')?>게시판 이름</a></td>
<td class="tbline2" title='목록읽기권한'><?=subject_sort_link('bo_list_level')?>목록</a></td>
<td class="tbline2" title='글읽기권한'><?=subject_sort_link('bo_read_level')?>읽기</a></td>
<td class="tbline2" title='글쓰기권한'><?=subject_sort_link('bo_write_level')?>쓰기</a></td>
<td class="tbline2" title='답변글쓰기권한'><?=subject_sort_link('bo_reply_level')?>답변</a></td>
<td class="tbline2" title='코멘트쓰기권한'><?=subject_sort_link('bo_comment_level')?>덧글</a></td>
<td class="tbline2" title='업로드권한'><?=subject_sort_link('bo_upload_level')?>업</a></td>
<td class="tbline2" title='다운로드권한'><?=subject_sort_link('bo_download_level')?>다운</a></td>
<td class="tbline2" title='HTML쓰기권한'><?=subject_sort_link('bo_html_level')?>HTML</a></td>
<td class="tbline2" title='링크쓰기권한'><?=subject_sort_link('bo_link_level')?>링크</a></td>
<? if ($is_admin == "super" || $is_auth) { ?>
<td class="tbline2" width='100' align='left' style='padding-left:10;'><?=subject_sort_link('bo_skin')?>적용스킨</a></td>
<td class="tbline2" width='60'><a href='<?=$g4[admin_path]?>'>수정</a></td>
<? } ?>
</tr>
<tr><td colspan='12'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++) {
//제외게시판 ||(or) 로 구분합다
if($row[bo_table]==aaa||$row[bo_table]==bbb||$row[bo_table]==ccc||$row[bo_table]==fffff){}
if ($is_admin == "super")
$s_upd = "<a href='$g4[admin_path]/board_form.php?w=u&bo_table=$row[bo_table]&$qstr'><img src='$g4[admin_path]/img/icon_modify.gif' border=0 title='수정'></a>";
$list = $i % 2;
$skiname_len = get_text(cut_str($row[bo_skin],15));//나스카님껄로 자르기
echo "
<tr align='center'>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' height=25 title='게시판명' align='left' style='padding-left:10;'><a href='$g4[bbs_path]/board.php?bo_table=$row[bo_table]'>$row[bo_subject]</a></td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='목록보기 권한'>$row[bo_list_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='글읽기 권한'>$row[bo_read_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='글쓰기 권한'>$row[bo_write_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='글답변 권한'>$row[bo_reply_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='코멘트 쓰기 권한'>$row[bo_comment_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='업로드 권한'>$row[bo_upload_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='다운로드 권한'>$row[bo_download_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='태그사용 권한'>$row[bo_html_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='링크사용 권한'>$row[bo_link_level]</td>";
if ($is_admin == "super" || $is_auth) {
echo "
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' width='100' align='left' style='padding-left:10;'>$skiname_len</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' width='60'>$s_upd</td>
</tr>";
} else {
echo "
</tr>";
}
}
if ($i == 0)
echo "<tr><td colspan='12' align='center' height='100' bgcolor='#ffffff'>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='12'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width='100%' height='40' class='' cellpadding=0 cellspacing=0>";
echo "<tr><td width='30%' align='right'>$pagelist  </td></tr></table>\n";
if ($stx)
echo "<script>document.fsearch.sfl.value = '$sfl';</script>";
?>
 
<?
include_once("$g4[path]/tail.php");
?>
  • 복사

댓글 전체

select count(*) as cnt from g4_member where (1) order by bo_list_level asc
1054 : Unknown column 'bo_list_level' in 'order clause'
error file : /young/access/access.php

위의 쿼리는 테이블의 count를 구하는것인데 count는 정렬이 의미 없는것입니다.
order by bo_list_level asc 를 제거하십시오.
root님 답변 감사합니다.

그냥 그대로 사용시에는 문제가 없지만
소트하려고 클릭시 정렬되지 않고 에러문구가 뜰 뿐이죠.
해결이 되지는 않았지만, 느긋한 마음으로 공부해 보렵니다.
다시한번 정성스런 답변에 감사를 표합니다.
> //if (!$sst) {
> $sst= "a.bo_subject, a.gr_id";
> $sod = "asc";
> //}
위내용 sst가 오류가 나서 주석처리하셨다고 했는데...
어떤오류인지 그것부터 해결하셔야 할것같습니다.

위의 내용이 어떤 항목이 클릭되었는지를 판단해서 소팅을 설정하는것입니다.
if (!$sst) {
$sst= "a.bo_subject, a.gr_id";
$sod = "asc";
}
====================================
상기와 같이 if문의 괄호를 주석처리 안하고 사용시에는 황당한 에러(아래처럼)가 나오고
아예 브레이크 포인트가 걸려서 다음으로 넘어가지 않습니다.
주석처리시에는 새로운 정렬만 시도하지 않으면 정상작동됩니다.
위처럼 사용하면 제목과 그룹아이디로 내림차순 정렬로
한번은 먹히는데 다시 정렬시도시 안되는 것이지요.
그냥 사용하면 상관없는데 꼭 정렬기능을 써보고 싶어서 연구중입니다.
어째서 mb_datetime로 정렬하라고 하지도 않았는데 저렇게 나오는지 알 수가 없군요.
=================황당한 에러==============
select count(*) as cnt from g4_board a where (1) and bo_use_search = '1' order by mb_datetime desc

1054 : Unknown column 'mb_datetime' in 'order clause'

error file : /young/access/access.php
아래의 소스 테스트 결과 작동이 됩니다.....

아래것을 교체 해 보세요..

<?
$g4_path = ".";//개인에 맞게 수정
include_once("$g4_path/_common.php");
include_once("$g4[path]/head.sub.php");
$g4[title] = "게시판별 접근권한 안내";
$sql_common = " from $g4[board_table] where (1) and bo_use_search = '1' ";

$sql = " select count(*) as cnt $sql_common";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$sql = " select * $sql_common";
$result = sql_query($sql);
if (!$sst) {
$sst= "bo_subject, gr_id";
$sod = "asc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
//$rows = $config[cf_page_rows];
$rows = 15;
$total_page= ceil($total_count / $rows);// 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]'>처음</a>";
$colspan = 27;
?>
<style>
.tbline1  { border-top: 1px solid #D7D7D7; border-left: 1px solid #D7D7D7; }
.tbline2  { border-right: 1px solid #D7D7D7; border-bottom: 1px solid #D7D7D7; }
</style>
<script language='javascript'>
var list_update_php = '<?=$g4[admin_path]?>/board_list_update.php';
var list_delete_php = '<?=$g4[admin_path]?>/board_list_delete.php';
</script>
<table width="680" cellpadding="5" cellspacing="0">
<tr><td height='30'><?=$g4[title]?></td><td align="right">[게시판수 : <?=number_format($total_count)?>개]</td></tr>
<tr><td height='1' colspan='2' bgcolor="#999999"></td></tr>
</table>
<table width='100%' height='30' cellpadding='0' cellspacing='0' border='0' class=''>
<form name='fsearch' method='get'>
<tr> 
<td width='100%' align='right'><select name='sfl' class='category'>
<option value='bo_admin'> 관리자 </option>
<option value='bo_skin'> 스킨 </option>
<option value='bo_subject'> 제목 </option>
<option value='bo_table' selected> 테이블 </option></select>
<input class='input' type='text' name='stx' size='15' required itemname='검색어' value='<?=$stx?>'>
<input onfocus='blur()' style='cursor:hand;' type='image' src='<?=$g4[admin_path]?>/img/btn_search.gif' align='absmiddle' border=0 title='검색'></td>
</tr></form></table>
<table width="680" cellpadding="0" cellspacing="0" class="tbline1">
<colgroup width='150'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<colgroup width='50'>
<? if ($is_admin == "super" || $is_auth) { ?>
<colgroup width='100'>
<colgroup width='60'>
<? } ?>
<tr height='35' align='center' class='subject'>
<td class="tbline2" align='center'><?=subject_sort_link('bo_subject')?>게시판 이름</a></td>
<td class="tbline2" title='목록읽기권한'><?=subject_sort_link('bo_list_level')?>목록</a></td>
<td class="tbline2" title='글읽기권한'><?=subject_sort_link('bo_read_level')?>읽기</a></td>
<td class="tbline2" title='글쓰기권한'><?=subject_sort_link('bo_write_level')?>쓰기</a></td>
<td class="tbline2" title='답변글쓰기권한'><?=subject_sort_link('bo_reply_level')?>답변</a></td>
<td class="tbline2" title='코멘트쓰기권한'><?=subject_sort_link('bo_comment_level')?>덧글</a></td>
<td class="tbline2" title='업로드권한'><?=subject_sort_link('bo_upload_level')?>업</a></td>
<td class="tbline2" title='다운로드권한'><?=subject_sort_link('bo_download_level')?>다운</a></td>
<td class="tbline2" title='HTML쓰기권한'><?=subject_sort_link('bo_html_level')?>HTML</a></td>
<td class="tbline2" title='링크쓰기권한'><?=subject_sort_link('bo_link_level')?>링크</a></td>
<? if ($is_admin == "super" || $is_auth) { ?>
<td class="tbline2" width='100' align='left' style='padding-left:10;'><?=subject_sort_link('bo_skin')?>적용스킨</a></td>
<td class="tbline2" width='60'><a href='<?=$g4[admin_path]?>'>수정</a></td>
<? } ?>
</tr>
<tr><td colspan='12'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++) {
//제외게시판 ||(or) 로 구분합다
if($row[bo_table]==aaa||$row[bo_table]==bbb||$row[bo_table]==ccc||$row[bo_table]==fffff){}
if ($is_admin == "super")
$s_upd = "<a href='$g4[admin_path]/board_form.php?w=u&bo_table=$row[bo_table]&$qstr'><img src='$g4[admin_path]/img/icon_modify.gif' border=0 title='수정'></a>";
$list = $i % 2;
$skiname_len = get_text(cut_str($row[bo_skin],15));//나스카님껄로 자르기
echo "
<tr align='center'>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' height=25 title='게시판명' align='left' style='padding-left:10;'><a href='$g4[bbs_path]/board.php?bo_table=$row[bo_table]'>$row[bo_subject]</a></td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='목록보기 권한'>$row[bo_list_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='글읽기 권한'>$row[bo_read_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='글쓰기 권한'>$row[bo_write_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='글답변 권한'>$row[bo_reply_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='코멘트 쓰기 권한'>$row[bo_comment_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='업로드 권한'>$row[bo_upload_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='다운로드 권한'>$row[bo_download_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='태그사용 권한'>$row[bo_html_level]</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' title='링크사용 권한'>$row[bo_link_level]</td>";
if ($is_admin == "super" || $is_auth) {
echo "
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' width='100' align='left' style='padding-left:10;'>$skiname_len</td>
<td style='border-right-width:1;border-right-color:#d7d7d7;border-right-style:solid;border-bottom-width:1;border-bottom-color:#d7d7d7;border-bottom-style:solid;' width='60'>$s_upd</td>
</tr>";
} else {
echo "
</tr>";
}
}
if ($i == 0)
echo "<tr><td colspan='12' align='center' height='100' bgcolor='#ffffff'>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='12'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width='100%' height='40' class='' cellpadding=0 cellspacing=0>";
echo "<tr><td width='30%' align='right'>$pagelist&nbsp;&nbsp;</td></tr></table>\n";
if ($stx)
echo "<script>document.fsearch.sfl.value = '$sfl';</script>";
?>
 
<?
include_once("$g4[path]/tail.sub.php");
?>
열정님과 root님께 진심으로 감사드립니다.

열정님이 이상없이 작동된다고 하셔서
그누보드 기본 head.php파일로 교체해서 시도해 보니 이상없이 작동되었습니다.
이상한 에러메시지는 좌측자동메뉴에서 나왔군요.

아무튼 해결했습니다.
두분께 감사드립니다.
© SIRSOFT
현재 페이지 제일 처음으로