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

다른 게시판 첨부파일 다운로드 및 노출기능 채택완료

위젯마스터 10개월 전 조회 1,344

안녕하세요. A게시판 wr_id=1 번인 view 페이지에 B게시판 wr_id = 1의 첨부파일을 노출하고 싶습니다.

테이블명은 g5_write_a 와 g5_write_b 입니다.

 

게시판 구조를 보니 $view에 file을 담아서 get_file_thumbnail 함수를 호출해서 다운로드 및 본문 노출을 하는것 같습니다.

 

B게시판의 첨부파일 노출을 위해 $view2를 만들고 아래와 같이 호출하려고 하나 $board에 담긴정보가 많아 단순히 'b'로 넣어서는 동작하지 않는것 같습니다. 어떻게 하면 B게시판의 첨부파일을 A게시판에 노출할 수 있는지 궁금합니다.

 

그럼 고수님들의 조언을 부탁드립니다. 

 

</p>

<p>    $view2 = get_view($write, 'b', $board_skin_path);</p>

<p> </p>

<p> </p>

<p>// common.lib.php  에 정의된 get_view(), get_list(), get_file() 함수</p>

<p> </p>

<p>function get_view($write_row, $board, $skin_url)</p>

<p>{</p>

<p>    return get_list($write_row, $board, $skin_url, 255);</p>

<p>}</p>

<p> </p>

<p>// 게시물 정보($write_row)를 출력하기 위하여 $list로 가공된 정보를 복사 및 가공</p>

<p>function get_list($write_row, $board, $skin_url, $subject_len=40)</p>

<p>{</p>

<p>    global $g5, $config, $g5_object;</p>

<p>    global $qstr, $page;</p>

<p> </p>

<p>    //$t = get_microtime();</p>

<p> </p>

<p>    $g5_object->set('bbs', $write_row['wr_id'], $write_row, $board['bo_table']);</p>

<p> </p>

<p>    // 배열전체를 복사</p>

<p>    $list = $write_row;</p>

<p>    unset($write_row);</p>

<p> </p>

<p>    $board_notice = array_map('trim', explode(',', $board['bo_notice']));</p>

<p>    $list['is_notice'] = in_array($list['wr_id'], $board_notice);</p>

<p> </p>

<p>    if ($subject_len)</p>

<p>        $list['subject'] = conv_subject($list['wr_subject'], $subject_len, '…');</p>

<p>    else</p>

<p>        $list['subject'] = conv_subject($list['wr_subject'], $board['bo_subject_len'], '…');</p>

<p> </p>

<p>    if( ! (isset($list['wr_seo_title']) && $list['wr_seo_title']) && $list['wr_id'] ){</p>

<p>        seo_title_update(get_write_table_name($board['bo_table']), $list['wr_id'], 'bbs');</p>

<p>    }</p>

<p> </p>

<p>    // 목록에서 내용 미리보기 사용한 게시판만 내용을 변환함 (속도 향상) : kkal3(커피)님께서 알려주셨습니다.</p>

<p>    if ($board['bo_use_list_content'])</p>

<p>    {</p>

<p>        $html = 0;</p>

<p>        if (strstr($list['wr_option'], 'html1'))</p>

<p>            $html = 1;</p>

<p>        else if (strstr($list['wr_option'], 'html2'))</p>

<p>            $html = 2;</p>

<p> </p>

<p>        $list['content'] = conv_content($list['wr_content'], $html);</p>

<p>    }</p>

<p> </p>

<p>    $list['comment_cnt'] = '';</p>

<p>    if ($list['wr_comment'])</p>

<p>        $list['comment_cnt'] = "<span class=\"cnt_cmt\">".$list['wr_comment']."</span>";</p>

<p> </p>

<p>    // 당일인 경우 시간으로 표시함</p>

<p>    $list['datetime'] = substr($list['wr_datetime'],0,10);</p>

<p>    $list['datetime2'] = $list['wr_datetime'];</p>

<p>    if ($list['datetime'] == G5_TIME_YMD)</p>

<p>        $list['datetime2'] = substr($list['datetime2'],11,5);</p>

<p>    else</p>

<p>        $list['datetime2'] = substr($list['datetime2'],5,5);</p>

<p>    // 4.1</p>

<p>    $list['last'] = substr($list['wr_last'],0,10);</p>

<p>    $list['last2'] = $list['wr_last'];</p>

<p>    if ($list['last'] == G5_TIME_YMD)</p>

<p>        $list['last2'] = substr($list['last2'],11,5);</p>

<p>    else</p>

<p>        $list['last2'] = substr($list['last2'],5,5);</p>

<p> </p>

<p>    $list['wr_homepage'] = get_text($list['wr_homepage']);</p>

<p> </p>

<p>    $tmp_name = get_text(cut_str($list['wr_name'], $config['cf_cut_name'])); // 설정된 자리수 만큼만 이름 출력</p>

<p>    $tmp_name2 = cut_str($list['wr_name'], $config['cf_cut_name']); // 설정된 자리수 만큼만 이름 출력</p>

<p>    if ($board['bo_use_sideview'])</p>

<p>        $list['name'] = get_sideview($list['mb_id'], $tmp_name2, $list['wr_email'], $list['wr_homepage']);</p>

<p>    else</p>

<p>        $list['name'] = '<span class="'.($list['mb_id']?'sv_member':'sv_guest').'">'.$tmp_name.'</span>';</p>

<p> </p>

<p>    $reply = $list['wr_reply'];</p>

<p> </p>

<p>    $list['reply'] = strlen($reply)*20;</p>

<p> </p>

<p>    $list['icon_reply'] = '';</p>

<p>    if ($list['reply'])</p>

<p>        $list['icon_reply'] = '<img src="'.$skin_url.'/img/icon_reply.gif" class="icon_reply" alt="답변글">';</p>

<p> </p>

<p>    $list['icon_link'] = '';</p>

<p>    if ($list['wr_link1'] || $list['wr_link2'])</p>

<p>        $list['icon_link'] = '<i class="fa fa-link" aria-hidden="true"></i> ';</p>

<p> </p>

<p>    // 분류명 링크</p>

<p>    $list['ca_name_href'] = get_pretty_url($board['bo_table'], '', 'sca='.urlencode($list['ca_name']));</p>

<p> </p>

<p>    // $list['href'] = get_pretty_url($board['bo_table'], $list['wr_id'], $qstr);</p>

<p>    $list['href'] = get_pretty_url($board['bo_table'], $list['wr_id']);</p>

<p>    $list['comment_href'] = $list['href'];</p>

<p> </p>

<p>    $list['icon_new'] = '';</p>

<p>    if ($board['bo_new'] && $list['wr_datetime'] >= date("Y-m-d H:i:s", G5_SERVER_TIME - ($board['bo_new'] * 3600)))</p>

<p>        $list['icon_new'] = '<img src="'.$skin_url.'/img/icon_new.gif" class="title_icon" alt="새글"> ';</p>

<p> </p>

<p>    $list['icon_hot'] = '';</p>

<p>    if ($board['bo_hot'] && $list['wr_hit'] >= $board['bo_hot'])</p>

<p>        $list['icon_hot'] = '<i class="fa fa-heart" aria-hidden="true"></i> ';</p>

<p> </p>

<p>    $list['icon_secret'] = '';</p>

<p>    if (strstr($list['wr_option'], 'secret'))</p>

<p>        $list['icon_secret'] = '<i class="fa fa-lock" aria-hidden="true"></i> ';</p>

<p> </p>

<p>    // 링크</p>

<p>    for ($i=1; $i<=G5_LINK_COUNT; $i++) {</p>

<p>        $list['link'][$i] = set_http(get_text($list["wr_link{$i}"]));</p>

<p>        $list['link_href'][$i] = G5_BBS_URL.'/link.php?bo_table='.$board['bo_table'].'&amp;wr_id='.$list['wr_id'].'&amp;no='.$i.$qstr;</p>

<p>        $list['link_hit'][$i] = (int)$list["wr_link{$i}_hit"];</p>

<p>    }</p>

<p> </p>

<p>    // 가변 파일</p>

<p>    if ($board['bo_use_list_file'] || ($list['wr_file'] && $subject_len == 255) /* view 인 경우 */) {</p>

<p>        $list['file'] = get_file($board['bo_table'], $list['wr_id']);</p>

<p>    } else {</p>

<p>        $list['file']['count'] = $list['wr_file'];</p>

<p>    }</p>

<p> </p>

<p>    if ($list['file']['count'])</p>

<p>        $list['icon_file'] = '<i class="fa fa-download" aria-hidden="true"></i> ';</p>

<p> </p>

<p>    return $list;</p>

<p>}</p>

<p> </p>

<p>// 게시글에 첨부된 파일을 얻는다. (배열로 반환)</p>

<p>function get_file($bo_table, $wr_id)</p>

<p>{</p>

<p>    global $g5, $qstr, $board;</p>

<p> </p>

<p>    $file['count'] = 0;</p>

<p>    $sql = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no ";</p>

<p>    $result = sql_query($sql);</p>

<p>    $nonce = download_file_nonce_key($bo_table, $wr_id);</p>

<p>    while ($row = sql_fetch_array($result))</p>

<p>    {</p>

<p>        $no = (int) $row['bf_no'];</p>

<p>        $bf_content = $row['bf_content'] ? html_purifier($row['bf_content']) : '';</p>

<p>        $file[$no]['href'] = G5_BBS_URL."/download.php?bo_table=$bo_table&amp;wr_id=$wr_id&amp;no=$no&amp;nonce=$nonce" . $qstr;</p>

<p>        $file[$no]['download'] = $row['bf_download'];</p>

<p>        // 4.00.11 - 파일 path 추가</p>

<p>        $file[$no]['path'] = G5_DATA_URL.'/file/'.$bo_table;</p>

<p>        $file[$no]['size'] = get_filesize($row['bf_filesize']);</p>

<p>        $file[$no]['datetime'] = $row['bf_datetime'];</p>

<p>        $file[$no]['source'] = addslashes($row['bf_source']);</p>

<p>        $file[$no]['bf_content'] = $bf_content;</p>

<p>        $file[$no]['content'] = get_text($bf_content);</p>

<p>        //$file[$no]['view'] = view_file_link($row['bf_file'], $file[$no]['content']);</p>

<p>        $file[$no]['view'] = view_file_link($row['bf_file'], $row['bf_width'], $row['bf_height'], $file[$no]['content']);</p>

<p>        $file[$no]['file'] = $row['bf_file'];</p>

<p>        $file[$no]['image_width'] = $row['bf_width'] ? $row['bf_width'] : 640;</p>

<p>        $file[$no]['image_height'] = $row['bf_height'] ? $row['bf_height'] : 480;</p>

<p>        $file[$no]['image_type'] = $row['bf_type'];</p>

<p>        $file[$no]['bf_fileurl'] = $row['bf_fileurl'];</p>

<p>        $file[$no]['bf_thumburl'] = $row['bf_thumburl'];</p>

<p>        $file[$no]['bf_storage'] = $row['bf_storage'];</p>

<p>        $file['count']++;</p>

<p>    }</p>

<p> </p>

<p>    return run_replace('get_files', $file, $bo_table, $wr_id);</p>

<p>}</p>

<p> </p>

<p>

 

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

답변 3개

채택된 답변
+20 포인트
10개월 전

$view2를 만들게 아니라 파일만 가져오면 되겠습니다

view페이지 상단에서

$view['file'] = get_file('b', $wr_id);

$view['file']['count'] = $view['file']['wr_file'];

 

확인

print_r($view); or print_r($view['file']);

 

 

 

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

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

glitter0gim
10개월 전

※ get_file() 함수를 확장하여 게시판 데이터 통합하는 방법입니다.

get_file() 함수의 호출 시 두 게시판(A와 B)의 데이터를 다루도록 수정.

A 게시판에서 wr_id=1의 데이터를 B 게시판의 첨부파일과 함께 사용하기 위해

common.lib.php에 새로운 함수 또는 기존 함수를 확장하여 데이터 처리를 통합.

 

get_view() 함수 확장: 현재 get_view() 함수는 게시판 정보를 단일 테이블로 가정.

이를 수정하여 추가적으로 다른 테이블의 데이터를 병합할 수 있도록 만듭니다.

별도 함수 작성: 새로운 get_merged_view() 함수를 작성하여, A와 B 게시판의 wr_id를 기반으로 데이터를 병합한 후 반환합니다.

파일 호출 및 통합: lib/common.lib.php 파일에 아래와 같이 코드를 추가합니다.

</p>

<p>function get_merged_view($a_wr_id, $b_wr_id, $a_table, $b_table, $board_skin_path) {

    global $g5;</p>

<p>    // A 게시판의 데이터 가져오기

    $a_query = "SELECT * FROM {$g5['write_prefix']}{$a_table} WHERE wr_id = '{$a_wr_id}'";

    $a_result = sql_fetch($a_query);</p>

<p>    // B 게시판의 파일 정보 가져오기

    $b_files = get_file($b_table, $b_wr_id);</p>

<p>    // A 게시판 데이터를 B 게시판의 첨부파일 데이터와 병합

    $a_result['merged_files'] = $b_files;</p>

<p>    return get_view($a_result, $a_table, $board_skin_path);

}</p>

<p>

사용 방법: $view2 = get_merged_view(1, 1, 'a', 'b', $board_skin_path);

예시 파일 구조에서의 통합:

  - lib/common.lib.php: 함수 정의

  - bbs/view.php: $view2를 호출하여 출력 데이터 확장

 

♣ 이 접근 방식을 요약하자면,

데이터 통합을 위해 기존 함수(get_viewget_file)를 활용하며,

두 게시판의 정보를 동시에 참조하도록 확장합니다.

이렇게 하면 $view의 데이터를 B 게시판 첨부파일과 병합하여 사용할 수 있습니다.

 

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

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

10개월 전
로그인 후 평가할 수 있습니다

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

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

로그인