회원 아이디와 게시글 여분필드 값이 같으면 내가쓴글 에 출력하기

회원 아이디와 게시글 여분필드 값이 같으면 내가쓴글 에 출력하기

QA

회원 아이디와 게시글 여분필드 값이 같으면 내가쓴글 에 출력하기

본문

new.php를 이용하여 내가 쓴글을 출력하게 만들었습니다. 
아래는 해당 코드입니다. 

(+) 여기서 기능을 추가하고 싶은데 회원아이디가 사업자번호 10자리로 구성되겠끔 번호로 이루어져 있습니다. 
그리고 게시판 글쓰기 페이지에 여분필드 wr_12를 추가하여 사업자번호를 넣을 수 있게 했습니다.

그래서 회원 아이디 = wr_12 가 되면 내가 쓴글 목록에 추가하고 싶습니다. 

고수님들 도와주세요~

 


<?
include_once("./_common.php");
$g5[title] = "최근 게시물"; 
include_once("./_head.php"); 
$mb_id = $_GET['mb_id']; 
if(!$mb_id){ 
$mb_id = $_POST['mb_id']; 
if(!$mb_id){ 
$mb_id = $member[mb_id]; 
} 
} 
$gr_id = "";
if(!$view){$view = "w";}
    $sql_common = " from {$g5['board_new_table']} a, {$g5['board_table']} b, {$g5['group_table']} c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = 1 ";
if ($gr_id)
    $sql_common .= " and b.gr_id = '$gr_id' ";
if ($view == "w")
    $sql_common .= " and a.wr_id = a.wr_parent ";
else if ($view == "c")
    $sql_common .= " and a.wr_id <> a.wr_parent ";
if ($mb_id)
    $sql_common .= " and a.mb_id = '$mb_id' ";
$sql_order = " order by a.bn_id desc ";
$sql = " select count(*) as cnt $sql_common ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_new_rows];
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if (!$page) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$group_select = "<select name=gr_id id=gr_id onchange='select_change();'><option value=''>전체그룹";
$sql = " select gr_id, gr_subject from $g5[group_table] order by gr_id ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) 
{
    $group_select .= "<option value='$row[gr_id]'>$row[gr_subject]";
}
$group_select .= "</select>";

$list = array();
$sql = " select a.*, b.bo_subject, c.gr_subject, c.gr_id
          $sql_common
          $sql_order
          limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) 
{
    $tmp_write_table = $g5[write_prefix] . $row[bo_table];
    if ($row[wr_id] == $row[wr_parent]) // 원글
    {
        $comment = "";
        $comment_link = "";
        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_id]' ");
        $list[$i] = $row2;
        $name = get_sideview($row2[mb_id], cut_str($row2[wr_name], $config[cf_cut_name]), $row2[wr_email], $row2[wr_homepage]);
        // 당일인 경우 시간으로 표시함
        $datetime = substr($row2[wr_datetime],0,10);
        $datetime2 = $row2[wr_datetime];
        if ($datetime == $g5[time_ymd])
            $datetime2 = substr($datetime2,11,5);
        else
            $datetime2 = substr($datetime2,5,5);
    }
    else // 코멘트
    {
        $comment = "[코] ";
        $comment_link = "#c_{$row[wr_id]}";
        $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_parent]' ");
        $row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from $tmp_write_table where wr_id = '$row[wr_id]' ");
        $list[$i] = $row2;
        $list[$i][mb_id] = $row3[mb_id];
        $list[$i][wr_name] = $row3[wr_name];
        $list[$i][wr_email] = $row3[wr_email];
        $list[$i][wr_homepage] = $row3[wr_homepage];
        $name = get_sideview($row3[mb_id], cut_str($row3[wr_name], $config[cf_cut_name]), $row3[wr_email], $row3[wr_homepage]);
        // 당일인 경우 시간으로 표시함
        $datetime = substr($row3[wr_datetime],0,10);
        $datetime2 = $row3[wr_datetime];
        if ($datetime == $g5[time_ymd])
            $datetime2 = substr($datetime2,11,5);
        else
            $datetime2 = substr($datetime2,5,5);
    }
    $list[$i][gr_id] = $row[gr_id];
    $list[$i][bo_table] = $row[bo_table];
    $list[$i][name] = $name;
    $list[$i][comment] = $comment;
    $list[$i][href] = "./board.php?bo_table=$row[bo_table]&wr_id=$row2[wr_id]{$comment_link}";
    $list[$i][datetime] = $datetime;
    $list[$i][datetime2] = $datetime2;
    $list[$i][gr_subject] = $row[gr_subject];
    $list[$i][bo_subject] = $row[bo_subject];
    $list[$i][wr_subject] = $row2[wr_subject];
}
$write_pages = get_paging($config[cf_write_pages], $page, $total_page, "{$PHP_SELF}?view=$view&page=");
$new_skin_path = "$g5[path]/skin/new/$config[cf_new_skin]";
echo "<script type=\"text/javascript\" src=\"$g5[path]/js/sideview.js\"></script>\n";
?>
                <!-- board_list-->
                <table border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <th scope="col" class="title_divide">게시판</th>
                        <th scope="col" class="title_title">제목</th>
                        <th scope="col" class="title_date">등록일</th>
                    </tr>
                    <?
for ($i=0; $i<count($list); $i++) 
{
    $gr_subject = $list[$i][gr_subject];
    $bo_subject = $list[$i][bo_subject];
    $wr_subject = get_text($list[$i][wr_subject]);
    echo <<<HEREDOC
<tr> 
    <td class="divide">{$bo_subject}</td>
    <td class="title"><a href='/bbs/{$list[$i][href]}'>{$list[$i][comment]}{$wr_subject}</a></td>
    <td class="date">{$list[$i][datetime2]}</td>
</tr>
HEREDOC;
}
?>
<? if ($i == 0) { ?>
<tr><td colspan="3" height=50 align=center>게시물이 없습니다.</td></tr>
<? } ?>
                </table>
                <?=$write_pages?>

이 질문에 댓글 쓰기 :

답변 1

1) for 문, 원글 부분의 다음 코드를 조금 수정하면 될 듯 합니다.

$row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_id]' ");

->
$row2 = sql_fetch(" select * from $tmp_write_table where (wr_id = '$row[wr_id]' or wr_12 = '$mb_id') ");

 

2) 상단의 다음 코드는 삭제?? 해야 될 듯 싶습니다.

if ($mb_id)
    $sql_common .= " and a.mb_id = '$mb_id' ";

감사합니다! 그런데 추출한 리스트의 게시글이 같은 게시글인데도 반복 출력이 됩니다. 이부분 혹시 왜그런지 아실까욤?
$row2 = sql_fetch(" select * from $tmp_write_table where (wr_12 = '$mb_id') ");

이렇게 변경했더니 같은 게시글이 13페이지나 생겼습니다.

그 부분까지는 잘 모르겠습니다.

문제가 있다면.. 로직을 완전히 새로 구성/적용해야 될 것 같기도 합니다.
다만, 조금 복잡할 수 있고.. 새로 등록되는 글부터 적용됩니다. (과거글에도 적용하려면 수동으로 최신글 테이블에 값 insert 필요)

1) 최신글 테이블 (g5_board_new) 에 wr_12 칼럼 추가

2) 게시글 등록 처리페이지(/bbs/write_update.php)에서 최신글 테이블에 insert하는 구문 수정. wr_12 값을 최신글 테이블에도 저장

3) 위 소스의 상단 구문을 다음으로 수정. for문 안은 원 소스로 복원
if ($mb_id)
    $sql_common .= " and a.mb_id = '$mb_id' ";
   
->

if ($mb_id)
    $sql_common .= " and (a.mb_id = '$mb_id' or a.wr_12 = '$mb_id') ";

답변을 작성하시기 전에 로그인 해주세요.
전체 14
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT