[절박한 재질문] 카테고리 순서대로 리스트순서가 나오게 할 순 없을까요? 채택완료
안녕하세요?
오늘로만 세번째 입니다. ㅜㅜ
절실한 도움 부탁 필요합니다.
가|나|다|라|마|바|사|.. 이런 식으로 분류를 했으면,
리스트에도 위에 순서대로 뿌려 줄 수가 있을까요?
나중에 관리자페이지 게시판 설정에서 분류 순서를 바꿔도 게시물이 분류 순서대로
리스트에 뿌려 줄 수 있었으면 합니다. 흑흑.... 아무리 검색해 봐도 네이버 지식인에 올려도 가능 한게 없네요..
관리자 페이지에서 리스트 순서정렬에 보면 분류순서 정렬이 오름 아니면 내림으로 되어 있어서 의도 되로 안되네요.
고수분들의 도움 기다립니다.^^ 플리즈~~~~~~~~~~~~~~~~~~~~~~~
답변 4개
?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once("$board_skin_path/skin.lib.php");
if (!function_exists("imagecopyresampled")) alert("GD 2.0.1 이상 버전이 설치되어 있어야 사용할 수 있는 갤러리 게시판 입니다.");
if (!$board[bo_1]) {
$board[bo_1] = "160";
$sql = " update $g4[board_table] set bo_1 = '$board[bo_1]', bo_1_subj = '목록 가로 픽셀' where bo_table = '$bo_table' ";
sql_query($sql);
}
if (!$board[bo_2]) {
$board[bo_2] = "100";
$sql = " update $g4[board_table] set bo_2 = '$board[bo_2]', bo_2_subj = '목록 세로 픽셀' where bo_table = '$bo_table' ";
sql_query($sql);
}
$mod = $board[bo_gallery_cols];
$td_width = (int)(100 / $mod);
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
// 제목이 두줄로 표시되는 경우 이 코드를 사용해 보세요.
// <nobr style='display:block; overflow:hidden; width:000px;'>제목</nobr>
?>
<link href="<?=$board_skin_path?>/style.css" rel="stylesheet" type="text/css" />
<!-- 게시판 목록 시작 -->
<table width="<?=$width?>" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<!-- 분류 셀렉트 박스, 게시물 몇건, 관리자화면 링크 -->
<!-- <div style="float:left;height:22px;">
<? if ($is_category) { ?>
<? if (!$wr_id) { ?>
<?
$cnt_bo_1 = $bo_1[0] ? $bo_1[0] : 10; // 한줄당 분류 갯수(현재:10)
$cnt = 1;
$cnt0 = 0;
$bb_s=""; $bb_e="";
$b_s=""; $b_e="";
$arr = explode("|", $board[bo_category_list]); // 구분자가 , 로 되어 있음
$str = " <span style='font-family: Tahoma; font-size:10px; color:#D2D2D2;'>|</span> ";
for ($i=0; $i<count($arr); $i++)
if (trim($arr[$i])) {
if ($sca == $arr[$i]) { $cnt0++; $b_s="<b>"; $b_e="</b>"; } else {$b_s=""; $b_e="";}
$str .= " <a href='./board.php?bo_table=$bo_table&sca=".urlencode($arr[$i])."'>$b_s$arr[$i]$b_e</a> <span style='font-family: Tahoma; font-size:10px; color:#D2D2D2;'>|</span> ";
if ($cnt == $cnt_bo_1) { $cnt = 0; $str .= "<br>"; }
$cnt++;
}
if ($cnt0 == 0 ) { $bb_s="<b>"; $bb_e="</b>"; }
?>
<?echo " ";echo $bb_s;?><a href='./board.php?bo_table=<?=$bo_table?>&page=<?=$page?>'>전체</a><?=$bb_e?> <span style="font-size:8pt; color=#AEAEAE;">(<?=number_format($total_count)?>)</span>
<?=$str?>
<? } ?>
<? } ?>
</div>-->
<div class='bbs_count'>
<? if ($is_checkbox) { ?><INPUT onclick="if (this.checked) all_checked(true); else all_checked(false);" type='checkbox'><?}?>
TOTAL <?=number_format($total_count)?>
<? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/btn_rss.gif' border='0' align='absmiddle'></a><?}?>
<? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/admin_button.gif" title="관리자" border="0" align="absmiddle"></a><?}?>
</div>
<!-- 목록 -->
<form name="fboardlist" method="post">
<input type='hidden' name='bo_table' value='<?=$bo_table?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='spt' value='<?=$spt?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='sw' value=''>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td colspan=<?=$colspan?> class="bbs_line2"></td>
</tr>
<tr>
<?
for ($i=0; $i<count($list); $i++) {
if ($i && $i%$mod==0)
echo "</tr><tr>";
$style = "";
$subject = "<span $style>{$list[$i][subject]}</span>";
$comment_cnt = "";
if ($list[$i][comment_cnt])
$comment_cnt = " <a href=\"{$list[$i][comment_href]}\"><span style='font-size:10px;'><font face='Tahoma' color='#EE5A00'>{$list[$i][comment_cnt]}</span></a>";
$list[$i][name] = preg_replace("/<img /", "<img style='display:none;' ", $list[$i][name]);
$list[$i][name] = preg_replace("/> <span/", "><span", $list[$i][name]);
$list[$i][name] = preg_replace("/class='member'/", "", $list[$i][name]);
echo "<td width='{$td_width}%' valign=top style='word-break:break-all; padding:8px 0 0 0;'>";
echo "<table align=center>";
echo "<tr><td height=15></td></tr>";
echo "<tr><td align=center><div style='float:left; border:1px solid #ff0000; background:#fff; padding:0px; font-size:0; line-height:0;'><a href='{$list[$i][href]}'>".makeThumbs($g4[path]."/data/file/$bo_table", $list[$i][file][0][file], $board[bo_1], $board[bo_2], cut_str($list[$i][subject],20))."</a></div></td></tr>";
echo "<tr><td align=center class=lh height=26>";
echo "<a href='{$list[$i][href]}'><strong>$subject</strong></a><span class='comment'>{$comment_cnt}</span><br/>";
if ($is_category) echo "<a href='{$list[$i][ca_name_href]}'>[{$list[$i][ca_name]}]</a>";
echo " " . $list[$i][icon_new];
//echo " " . $list[$i][icon_file];
//echo " " . $list[$i][icon_link];
//echo " " . $list[$i][icon_hot];
//echo " " . $list[$i][icon_secret];
echo "</td></tr>";
//echo "<tr><td align=center style='font-size:11px; color:#888;'>Date.".$list[$i][datetime2]." <span style='font-size:9px;color:#CCCCCC;'>|</span> Hit.".$list[$i][wr_hit]."</td></tr>";
if ($is_checkbox) echo "<tr><td align=center><input type=checkbox name=chk_wr_id[] value='{$list[$i][wr_id]}'></td></tr>";
echo "</table></td>\n";
}
// 나머지 td
$cnt = $i%$mod;
if ($cnt)
for ($i=$cnt; $i<$mod; $i++)
echo "<td width='{$td_width}%'> </td>";
?>
</tr>
<? if (count($list) == 0) { echo "<tr><td colspan='$mod' height=400 align=center>게시물이 없습니다.</td></tr>"; } ?>
<tr><td colspan='<?=$mod?>' height="25"></td></tr>
<tr><td colspan=<?=$mod?> class='bbs_line'>
</table>
</form>
<!-- 페이징 -->
<div class="paginate_complex">
<? if ($prev_part_href) { echo "<a href='$prev_part_href' class=\"direction prev\"> <span> </span><span> </span> 이전검색</a>"; } ?>
<?
// 기본으로 넘어오는 페이지를 아래와 같이 변환하여 이미지로도 출력할 수 있습니다.
$write_pages = preg_replace("/<b>([0-9]*)<\/b>/", "<strong>$1</strong>", $write_pages);
$write_pages = str_replace(">처음", " class=\"direction prev\"> <span> </span><span> </span> ", $write_pages);
$write_pages = str_replace(">이전", " class=\"direction prev\"><span> </span> ", $write_pages);
$write_pages = str_replace(">다음", " class=\"direction next\" > <span> </span> ", $write_pages);
$write_pages = str_replace(">맨끝", " class=\"direction next\" ><span> </span><span> </span> ", $write_pages);
$write_pages = str_replace(" ", "", $write_pages);
?>
<?=$write_pages?>
<? if ($next_part_href) { echo "<a href='$next_part_href'> class=\"direction next\">다음검색 <span> </span><span> </span></a>"; } ?>
</div>
<!-- 검색&버튼 -->
<div style="float:left;">
<table cellpadding="0" cellspacing="0">
<tr>
<td align="left">
<form name="fsearch" method="get">
<input type="hidden" name="bo_table" value="<?=$bo_table?>">
<input type="hidden" name="sca" value="<?=$sca?>">
<select name="sfl" class="sel">
<option value="wr_subject">제목</option>
<option value="wr_content">내용</option>
<option value="wr_subject||wr_content">제목+내용</option>
<option value="mb_id,1">아이디</option>
<option value="mb_id,0">아이디(코)</option>
<option value="wr_name,1">글쓴이</option>
<option value="wr_name,0">글쓴이(코)</option>
</select>
</td>
<td align="left"><input name="stx" class="bbs_search" maxlength="33" itemname="검색어" required value='<?=stripslashes($stx)?>'></td>
<td><input type=image src="<?=$board_skin_path?>/img/btn_search.gif" border="0" align="absmiddle"></td>
</tr>
</table>
</form>
</div>
<div style="float:right;">
<? if ($is_checkbox) { ?>
<a href="javascript:select_delete();"><img src="<?=$board_skin_path?>/img/btn_select_delete.gif" border='0'></a><a href="javascript:select_copy('copy');"><img src="<?=$board_skin_path?>/img/btn_select_copy.gif" border='0'></a><a href="javascript:select_copy('move');"><img src="<?=$board_skin_path?>/img/btn_select_move.gif" border='0'></a>
<? } ?>
<? if ($list_href) { ?><a href="<?=$list_href?>"><img src="<?=$board_skin_path?>/img/btn_list.gif" border='0'></a><? } ?>
<? if ($write_href) { ?><a href="<?=$write_href?>"><img src="<?=$board_skin_path?>/img/btn_write.gif" border='0'></a><? } ?>
</div>
</td>
</tr>
</table>
<script language="JavaScript">
if ("<?=$sca?>") document.fcategory.sca.value = "<?=$sca?>";
if ("<?=$stx?>") {
document.fsearch.sfl.value = "<?=$sfl?>";
}
</script>
<? if ($is_checkbox) { ?>
<script language="JavaScript">
function all_checked(sw)
{
var f = document.fboardlist;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]")
f.elements[i].checked = sw;
}
}
function check_confirm(str)
{
var f = document.fboardlist;
var chk_count = 0;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
chk_count++;
}
if (!chk_count) {
alert(str + "할 게시물을 하나 이상 선택하세요.");
return false;
}
return true;
}
// 선택한 게시물 삭제
function select_delete()
{
var f = document.fboardlist;
str = "삭제";
if (!check_confirm(str))
return;
if (!confirm("선택한 게시물을 정말 "+str+" 하시겠습니까?\n\n한번 "+str+"한 자료는 복구할 수 없습니다"))
return;
f.action = "./delete_all.php";
f.submit();
}
// 선택한 게시물 복사 및 이동
function select_copy(sw)
{
var f = document.fboardlist;
if (sw == "copy")
str = "복사";
else
str = "이동";
if (!check_confirm(str))
return;
var sub_win = window.open("", "move", "left=50, top=50, width=396, height=550, scrollbars=1");
f.sw.value = sw;
f.target = "move";
f.action = "./move.php";
f.submit();
}
</script>
<? } ?>
<!-- 게시판 목록 끝 -->
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
$tmp=explode("|", trim($board['bo_category_list']));$key=array_search($ca_name, trim($tmp));sql_query("update $write_table set wr_good='$key' where wr_id='$wr_id'");?>정렬은 추천순위 thisgun님의 답변이 일반적인 방법이지만 그누보드 특성을 살려 사용하지않는 필드를 이용하면속도면에서도 유리할 겁니다
답변에 대한 댓글 8개
이 방법이 제가 말한것보다 훨씬 좋은 방법이네요. ^^
님이 알려주신 팁으,로 다른게시판에 한본 도전 해볼렵니다.
끝까지 성심껏 알려 주셔서 고맙습니다.
많이 배웁니다.^^
등록시 값을 저장해서 하는 것이니까요
한번 다시한번 해보고 댓글 남길께요.. 고마워요^^
왜 그럴까요?
고친곳도 없는데...
$key=array_search($ca_name, trim($tmp)); -->수정하세요 $key=array_search($ca_name, $tmp);
복받으실 거예요...
끝까지 신경써 주셔서 고맙습니다. 덕분에 많이 배우고 더 공부 하고 싶어졌어요...
다시 한 번 고맙습니다.^^ 땡~큐~~~~~~베리베리베리베리 많이~~~
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 3개
올립니다.
어떻게 넣어야 할지.....
열공하고 싶은 충동이 생기네요..
너무 고맙습니다.
바로 해결했습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
list.php 소스 중에
if ($sst)
$sql_order = " order by $sst $sod ";
if ($sca || $stx)
이 부분을 찾으신 후 이 부분을 아래와 같이 고치세요.
if 문으로 특정 테이블 조건 준 것은 적용 대상에 맞게 고치셔야 합니다.
[code]
if ($sst)
$sql_order = " order by $sst $sod ";
if($bo_table == "특정 테이블"){
$tmp_order = "";
$tmp_category = explode("|", $board['bo_category_list']);
$tmp_i = 0;
foreach($tmp_category as $v){
if( empty($v) ) continue;
$tmp_order .= " when ca_name = '".$v."' then ".$tmp_i++;
}
if( $tmp_order ){
$sql_order = " order by ( case $tmp_order else ".$tmp_i++." end ) ";
}
}
if ($sca || $stx)
[/code]