테스트 사이트 - 개발 중인 베타 버전입니다

[절박한 재질문] 카테고리 순서대로 리스트순서가 나오게 할 순 없을까요? 채택완료

1NEO 11년 전 조회 70,445

안녕하세요?

오늘로만 세번째 입니다. ㅜㅜ

절실한 도움 부탁 필요합니다.



가|나|다|라|마|바|사|..   이런 식으로 분류를 했으면,

리스트에도 위에 순서대로 뿌려 줄 수가 있을까요?


나중에 관리자페이지 게시판 설정에서 분류 순서를 바꿔도 게시물이 분류 순서대로

리스트에 뿌려 줄 수 있었으면 합니다. 흑흑.... 아무리 검색해 봐도 네이버 지식인에 올려도 가능 한게 없네요..


관리자 페이지에서 리스트 순서정렬에 보면 분류순서 정렬이 오름 아니면 내림으로 되어 있어서 의도 되로 안되네요.


고수분들의 도움 기다립니다.^^   플리즈~~~~~~~~~~~~~~~~~~~~~~~

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
꽁치입니다

?
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 = "&nbsp;<span style='font-family: Tahoma; font-size:10px; color:#D2D2D2;'>|</span>&nbsp;";
    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>&nbsp;&nbsp;<span style='font-family: Tahoma; font-size:10px; color:#D2D2D2;'>|</span>&nbsp;";

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]." &nbsp;<span style='font-size:9px;color:#CCCCCC;'>|</span>&nbsp; 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}%'>&nbsp;</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("&nbsp;", "", $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개

t
thisgun
11년 전
네... list.skin.php 가 아니라 /bbs/list.php 를 수정하셔야 합니다.

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]

댓글을 작성하려면 로그인이 필요합니다.

11년 전
지난번 답변대로 코딩이 불가능하다는 말씀인가요?
스킨 폴더에 write_update.skin.php를 만들고 아래 코드를 넣으세요
<?
$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개

t
thisgun
11년 전
우왕 이렇게도 할수가 있군요.
이 방법이 제가 말한것보다 훨씬 좋은 방법이네요. ^^
1
1NEO
11년 전
님도 정말 감사합니다.
님이 알려주신 팁으,로 다른게시판에 한본 도전 해볼렵니다.
끝까지 성심껏 알려 주셔서 고맙습니다.
많이 배웁니다.^^
균이
11년 전
이미 등록 된 게시물에 적용하려면 게시물 수정하기해서 저장을 해주어야 위 코드가 적용 됩니다
등록시 값을 저장해서 하는 것이니까요
1
1NEO
11년 전
헛~~~그걸 몰랐네요...ㅜㅜ;
한번 다시한번 해보고 댓글 남길께요.. 고마워요^^
1
1NEO
11년 전
역시나....ㅠㅠ 안 되네요..
왜 그럴까요?
고친곳도 없는데...
균이
11년 전
앗, 죄송..다시보니 들어갈 자리가 아닌곳에...trim
$key=array_search($ca_name, trim($tmp)); -->수정하세요 $key=array_search($ca_name, $tmp);
1
1NEO
11년 전
오웃......됩니다.^^ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
복받으실 거예요...
끝까지 신경써 주셔서 고맙습니다. 덕분에 많이 배우고 더 공부 하고 싶어졌어요...
다시 한 번 고맙습니다.^^ 땡~큐~~~~~~베리베리베리베리 많이~~~
a
alexseo
3년 전
wr_good 이 코드는 무엇이죠?
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

thisgun
11년 전
mysql case when 구문으로 해야 할것 같네요.

order by ( 
case when ca_name = '가' then 1 when ca_name = '나' then 2 when ca_name = '다' then 3 else 4 end 
)

그누보드를 사용하신다면 /bbs/list.php 에서 if 문으로 쿼리문을 수정하셔야 겠네요.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

1
1NEO
11년 전
list.skin.php
올립니다.
어떻게 넣어야 할지.....
1
1NEO
11년 전
너무너무 감사합니다.^^ 거의 5일 만에 해결 봤네요...정말 감사합니다.
열공하고 싶은 충동이 생기네요..
너무 고맙습니다.
지니야
7년 전
감사합니다.
바로 해결했습니다

댓글을 작성하려면 로그인이 필요합니다.

11년 전
sql 구문에서 order by ca_name asc 이런식으로 하면 되지 않을까요...
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

1
1NEO
11년 전
해 보았으나 ㄱㄴㄷㄹ... abcde.. 이런순서 배열은 의미가 없어서요..
분류입력시 순서대로 배열 되는것을 찾고 있습니다.^^;;

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인