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

관리자와 자신글만 보이기... 채택완료

김선만 11년 전 조회 6,696
아래 코드는 위 게시판 리스트 일부입니다.
관리자로 로그인하면 내역이 전부 보이는데 회원으로 로그인하면 내역이 전부 보이지 않습니다.
전 회원은 본인이 작성한 내역만 보이게 하고자합니다. 
회원은 본인 내역만 관리자는 전부 보이게 하려면 어케 하는지요
수정가능할런지요
// 이부분
$cday = 1;
$sel_mon = sprintf("%02d",$month);
$query = "SELECT * FROM $write_table WHERE left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";
$result = sql_query($query);
$j=0; // layer id
// 내용을 보여주는 부분
while ($row = mysql_fetch_array($result)) {  // 제목글 뽑아서 링크 문자열 만들기..
  if( substr($row[wr_1],0,6) <  $year.$sel_mon ) {
$start_day =1; 
$start_day= (int)$start_day;
  } else {
$start_day = substr($row[wr_1],6,2);
     $start_day= (int)$start_day;
  }
  if( substr($row[wr_2],0,6) >  $year.$sel_mon ) {
$end_day = $lastday[$month];
$end_day= (int)$end_day;
  } else {
$end_day = substr($row[wr_2],6,2);
$end_day= (int)$end_day;
  }
  // 아이디에 따라 다른 아이콘이미지 출력 하고 싶을때 ///주석을 해제
  $imgown = 'icon';
  for ($i = $start_day ; $i <= $end_day;  $i++) {
    if (strlen($row[wr_3]) > 0) {  // 입력된 아이콘 값이 있을 때
      $imgown = $row[wr_3] ;
}
    $j++; // layer ID
    $list[comment_cnt] = " ".$row[wr_comment]; // row에 대하여 코멘트 카운터 정의
    if($row[wr_comment] == 0) {
      $list[comment_cnt] = null ;
    } else {
 if($list[comment_cnt]!=null) $list[comment_cnt] = "".$list[comment_cnt].""; 
    }
    $row[wr_subject] = cut_str(get_text($row[wr_subject]),$board[bo_subject_len],"…"); // subject length cut
    $list['icon_new'] = '';
if ($row['wr_datetime'] >= date("Y-m-d H:i:s", G5_SERVER_TIME - ($board['bo_new'] * 3600)))
      $list['icon_new'] = " 새글";
    if ($member[mb_level] < $board[bo_read_level]) {
      $showLayer="" ;
    } else { 
      $showLayer=" onmouseover=\"PopupShow('".$j."')\" onmouseout=\"PopupHide('".$j."')\" ";
    }
    $html_day[$i].= " ".$row[wr_subject]."".$list[icon_new].$list[comment_cnt];
?>
   
    $html = 0;
    if (strstr($row[wr_option], "html1"))
      $html = 1;
    else if (strstr($row[wr_option], "html2"))
      $html = 2;
      $viewlist = cut_str(conv_content($row[wr_content], $html),200,"…");
 echo "( 작성자 : ".$row[wr_name]." ) ";
      echo $viewlist;
?>
   
// 이부분 끝
댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
11년 전

본 게시글을 작성하실때 올려주신 부분에서 아래 빨간색 부분만을 수정하셔서 적용해보세요.

  // 제거
$cday = 1;
$sel_mon = sprintf("%02d",$month);
$query = "SELECT * FROM $write_table WHERE mb_id='{$member[mb_id]}' and left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";  // 변경
$result = sql_query($query);
$j=0; // layer id
// 내용을 보여주는 부분
while ($row = mysql_fetch_array($result)) {  // 제목글 뽑아서 링크 문자열 만들기..
  if( substr($row[wr_1],0,6) <  $year.$sel_mon ) {
$start_day =1; 
$start_day= (int)$start_day;
  } else {
$start_day = substr($row[wr_1],6,2);
     $start_day= (int)$start_day;
  }
  if( substr($row[wr_2],0,6) >  $year.$sel_mon ) {
$end_day = $lastday[$month];
$end_day= (int)$end_day;
  } else {
$end_day = substr($row[wr_2],6,2);
$end_day= (int)$end_day;
  }
  // 아이디에 따라 다른 아이콘이미지 출력 하고 싶을때 ///주석을 해제
  $imgown = 'icon';
  for ($i = $start_day ; $i <= $end_day;  $i++) {
    if (strlen($row[wr_3]) > 0) {  // 입력된 아이콘 값이 있을 때
      $imgown = $row[wr_3] ;
}
    $j++; // layer ID
    $list[comment_cnt] = " ".$row[wr_comment]; // row에 대하여 코멘트 카운터 정의
    if($row[wr_comment] == 0) {
      $list[comment_cnt] = null ;
    } else {
 if($list[comment_cnt]!=null) $list[comment_cnt] = "".$list[comment_cnt].""; 
    }
    $row[wr_subject] = cut_str(get_text($row[wr_subject]),$board[bo_subject_len],"…"); // subject length cut
    $list['icon_new'] = '';
if ($row['wr_datetime'] >= date("Y-m-d H:i:s", G5_SERVER_TIME - ($board['bo_new'] * 3600)))
      $list['icon_new'] = " 새글";
    if ($member[mb_level] < $board[bo_read_level]) {
      $showLayer="" ;
    } else { 
      $showLayer=" onmouseover=\"PopupShow('".$j."')\" onmouseout=\"PopupHide('".$j."')\" ";
    }
    $html_day[$i].= " ".$row[wr_subject]."".$list[icon_new].$list[comment_cnt];
?>
   
    $html = 0;
    if (strstr($row[wr_option], "html1"))
      $html = 1;
    else if (strstr($row[wr_option], "html2"))
      $html = 2;
      $viewlist = cut_str(conv_content($row[wr_content], $html),200,"…");
 echo "( 작성자 : ".$row[wr_name]." ) ";
      echo $viewlist;
?>
   
// 제거
위와 같이만하시면 로그인한 사용자의 글만 달력에 표현됩니다.
여기에 관리자는 모두 보이게하고 싶으시다면 앞서 댓글로 알려드린대로 if($is_admin) 으로 $query 를 두개로 나누시면 됩니다.

if($is_admin) $query = "SELECT * FROM $write_table WHERE left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";

else $query = "SELECT * FROM $write_table WHERE mb_id='{$member[mb_id]}' and left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";

다시 확인해보세요.

안된다면 지금 작성자분께서 뭔가 다른 실수를 하고 계신걸거에요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

김선만
11년 전
감사, 감사요 정말 감사합니다.
잘 됩니다.
휴 이것때문에 진도 못 나갔는데 귀하분 덕에 해결요
정말 고맙습니다. 행복한 하루 되시길 바랍니다.

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

7년 전

많은 도움이 되었습니다. 감사합니다.

로그인 후 평가할 수 있습니다

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

11년 전
아래코드는 일반게시판 리스트에 아래 코드를 넣으면 됩니다. 
이걸로 어케 해 보려고 하는데 안되네요....;;
/*******************************************************************************
*
* 1:1 게시판 기능 - 시작 
*
*******************************************************************************/
// 공지가져오기
$noticeNumS = str_replace("\n",",",$board[bo_notice]);
$bb_query2 = "select * from `{$write_table}` where 1 and find_in_set(wr_id,'{$noticeNumS}') and wr_is_comment != 1 order by  wr_num, wr_reply;";
$result2 = sql_query($bb_query2);
$list2A = array();
while ($row = sql_fetch_array($result2))
{
$row = get_list($row, $board, $g5[path].'/skin/board/'.$board[bo_skin], $board[bo_subject_len]);
array_push($list2A, $row);
}
// 해당 사용자가 쓴 글의 번호를 얻어 옴.
$bb_query1 = "select * from `{$write_table}` where 1 and mb_id like '{$member[mb_id]}'";
$result1 = sql_query($bb_query1);
$list1A = array();
while ($row = sql_fetch_array($result1))
{
$list1S = $row[wr_num].",".$list1S;
//array_push($list1A, $row[wr_num]);
}
// 페이징 처리
$bb_query_total = "select * from `{$write_table}` where 1 and find_in_set(wr_num,'{$list1S}') and wr_is_comment != 1 order by  wr_num, wr_reply;";
$bb_result_total = sql_query($bb_query_total);
$bb_total_count = mysql_num_rows($bb_result_total);
$bb_total_page  = ceil($bb_total_count / $board[bo_page_rows]);  // 전체 페이지 계산
if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$bb_from_record = ($page - 1) * $board[bo_page_rows]; // 시작 열을 구함
$bb_url = "./board.php?bo_table={$board[bo_table]}&page=";
$bb_write_pages = get_paging( $board[bo_page_rows], $page, $bb_total_page, $bb_url, $add="");
// 공지글, 해당사용자가 쓴 글과 관련된 게시물 가져오기
$bb_query3 = "select * from `{$write_table}` where 1 and find_in_set(wr_num,'{$list1S}') and wr_is_comment != 1 order by  wr_num, wr_reply limit $bb_from_record, $board[bo_page_rows];";
$result3 = sql_query($bb_query3);
$list3A = array();
while ($row = sql_fetch_array($result3))
{
$row = get_list($row, $board, $g5[path].'/skin/board/'.$board[bo_skin], $board[bo_subject_len]);
array_push($list2A, $row);
}
if ( !$is_admin) {
$total_count = $bb_total_count;
$list = $list2A;
  $write_pages = $bb_write_pages;
}
/*******************************************************************************
*
* 1:1 게시판 기능을 위해서 추가된 부분 - 여기까지 
*
*******************************************************************************/
로그인 후 평가할 수 있습니다

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

11년 전

$query = "SELECT * FROM $write_table WHERE left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";

이 쿼리로 해결해보세요.

쿼리를 조건으로 처리해서 관리자일때 쿼리, 사용자일때 쿼리를 나누는게 효율적일 듯 싶네요.

if($is_admin) $query = "SELECT * FROM $write_table WHERE left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";

else $query = "SELECT * FROM $write_table WHERE wr_id='{$member[mb_id]}' and left(wr_1,6) <= '$year$sel_mon' and left(wr_2,6) >= '$year$sel_mon' ORDER BY wr_id ASC";

위 처럼.. 쿼리 조건문내에 wr_id 값이 현재 로그인한 사용자의 id 와 동일한 값만 호출해서 표현시키면 될 것 같습니다.

방법에 대한 의견일 뿐 최적화 코드는 다양한 방법으로 하셔도 되겠습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

김선만
11년 전
흑흑 왕 초보예요.
안됩니다. 전부 다 보이는데요.;;

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

지운아빠
11년 전
</span></div>
<div><span style="font-family: gulim, helvetica; line-height: 23.54400062561035px; font-size: 10pt"><?php if($is_admin || $member['mb_id']==$board['mb_id']) {  ?>// 이부분</span></div>
<div><span style="font-family: gulim, helvetica; line-height: 23.54400062561035px; font-size: 10pt">
대충 봐서는 윗 부분을
</span></div>
<div><span style="font-family: gulim, helvetica; line-height: 23.54400062561035px"><?php if($is_admin || $member['mb_id']==$list[$i]['mb_id']) {  ?>// 이부분</span></div>
<div>
이렇게 고치시면 될 것 같긴 한데요.
동작이 될지 안될지 모르겠지만... 효율적인 방법은 아닐 것 같습니다. 글을 다 읽어들이면서 mb_id 값을 대조, 보여줄지 말지 판단하는 거니까요.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

김선만
11년 전
답변감사요.
근데 안됩니다...;;

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

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

로그인