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

특정게시판의 내용을 다른게시판으로 연결하고 싶습니다. 채택완료

angpang 11개월 전 조회 1,220

안녕하세요? 첨부이미지와 같이 구현할려고 하는데요.

A게시판의 내용중 일부(여분필드, 첨부이미지)를 신청하기 시  B게시판으로 연결하여 A게시판 일부 내용을 그대로 끌어온 후 글쓰기를 구현 하고 싶은데 

초보자인 저로서는 많이 어렵네요.. 고수님들 답변을 얻을수 있을까요?.

추가로 카테고리(분류)가 있을경우 분류도 끌어올수 있나요?http://sir.kr/data/editor/2411/1935377306_1732059849.8356.jpg" width="100%" />

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

답변 6개

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

꽤 복잡한 로직으로 보입니다.

1. 먼저 A게시판(원본)의 view.skin.php 파일에 신청하기 버튼을 추가합니다:

<?php if ($view['wr_id']) { ?>

<a href="<?php echo G5_BBS_URL ?>/write.php?bo_table=게시판B&apply_id=<?php echo $view['wr_id'] ?>&apply_board=<?php echo $bo_table ?>" class="btn_b01 btn">신청하기</a>

<?php } ?>

2. B게시판(신청)의 write.skin.php 파일 상단에 다음 코드를 추가합니다:

<?php

// A게시판 데이터 가져오기

$apply = array();

$apply_image = '';

if(isset($_GET['apply_id']) && isset($_GET['apply_board'])) {

  $apply_id = (int)$_GET['apply_id'];

  $apply_board = preg_replace('/[^a-z0-9_]/i', '', $_GET['apply_board']);

  

  if($apply_id && $apply_board) {

    $write_table = $g5['write_prefix'] . $apply_board;

    $sql = " select * from {$write_table} where wr_id = '{$apply_id}' ";

    $apply = sql_fetch($sql);</p>

<p>    // A게시판의 첨부파일 정보 가져오기 - 첫번째 이미지만

    $apply_file = get_file($apply_board, $apply_id);

    if($apply_file['count']) {

      $thumb = get_list_thumbnail($apply_board, $apply_id, 300, 200);

      if($thumb) {

        $apply_image = '<div class="apply_img_wrap">'.PHP_EOL;

        $apply_image .= '<img src="'.$thumb['src'].'" alt="신청 게시물 이미지">'.PHP_EOL;

        $apply_image .= '<p class="apply_img_title">'.$apply_file[0]['source'].'</p>'.PHP_EOL;

        $apply_image .= '</div>'.PHP_EOL;

      }

    }

  }

}

?>

3. B게시판의 write.skin.php 파일의 form 태그 내부에 추가할 코드:

<!-- 원본글 정보 저장용 hidden 필드 -->

<input type="hidden" name="apply_id" value="<?php echo $apply_id ?>">

<input type="hidden" name="apply_board" value="<?php echo $apply_board ?>"></p>

<p><!-- 원본글의 여분필드 표시 -->

<?php if($apply['wr_1']) { ?>

<div class="apply_field">

  <label>신청내용</label>

  <div class="apply_value"><?php echo $apply['wr_1'] ?></div>

</div>

<?php } ?></p>

<p><!-- 원본글의 첨부이미지 표시 -->

<?php if($apply_image) { ?>

<div class="apply_files">

  <h3>신청 게시물 이미지</h3>

  <?php echo $apply_image ?>

</div>

<?php } ?></p>

<p><!-- 이미지 스타일 -->

<style>

/* 신청내용 스타일 */

.apply_field {margin:15px 0;padding:15px;background:#f8f8f8;border-radius:5px}

.apply_field label {display:block;margin-bottom:5px;color:#666}

.apply_value {font-size:1.1em;color:#000}</p>

<p>/* 이미지 표시 스타일 */

.apply_files {margin:20px 0;padding:20px;border:1px solid #ddd;border-radius:5px}

.apply_files h3 {margin-bottom:15px;font-size:1.1em;color:#666}

.apply_img_wrap {text-align:center}

.apply_img_wrap img {max-width:100%;height:auto}

.apply_img_title {margin-top:5px;font-size:0.9em;color:#666}

</style>

4. B게시판의 write_update.skin.php 파일 생성하여 A게시판의 이미지를 복사하는 코드 추가:

<?php

if (!defined('_GNUBOARD_')) exit;</p>

<p>// 원본 게시물 정보가 있는 경우

if(isset($_POST['apply_id']) && isset($_POST['apply_board'])) {

  $apply_id = (int)$_POST['apply_id']; 

  $apply_board = preg_replace('/[^a-z0-9_]/i', '', $_POST['apply_board']);</p>

<p>  if($apply_id && $apply_board) {

    // 원본 게시물의 첨부파일 정보 가져오기

    $apply_file = get_file($apply_board, $apply_id);

    

    if($apply_file['count']) {

      // 첫번째 이미지 파일만 처리

      $file = $apply_file[0];

      

      if($file['bf_file'] && preg_match("/\.(jpg|jpeg|gif|png)$/i", $file['bf_file'])) {

        // 파일 복사

        $src = G5_DATA_PATH.'/file/'.$apply_board.'/'.$file['bf_file'];

        $dst = G5_DATA_PATH.'/file/'.$bo_table.'/'.$file['bf_file'];

        

        if(@copy($src, $dst)) {

          // 파일정보 저장 - bf_no는 0으로 고정(첫번째 파일)

          $sql = " insert into {$g5['board_file_table']}

                    set bo_table = '{$bo_table}',

                        wr_id = '{$wr_id}',

                        bf_no = 0,

                        bf_source = '{$file['bf_source']}',

                        bf_file = '{$file['bf_file']}',

                        bf_download = 0,

                        bf_content = '{$file['bf_content']}',

                        bf_filesize = '{$file['bf_filesize']}',

                        bf_width = '{$file['bf_width']}',

                        bf_height = '{$file['bf_height']}',

                        bf_type = '{$file['bf_type']}',

                        bf_datetime = '".G5_TIME_YMDHIS."' ";

          sql_query($sql);

          

          // 원글의 파일개수 업데이트

          sql_query(" update {$write_table} set wr_file = 1 where wr_id = '{$wr_id}' ");

        }

      }

    }

  }

}

?>

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

답변에 대한 댓글 2개

a
angpang
11개월 전
앗..정말 감사합니다.. 게시판 불러오기는 잘되네요..^^ 덕분에 해결되었습니다..

하나만 더 도와주심 안될까요?..

A게시판에서 신청하기 후 b게시판에 불러오고 나머지 글을 쓴 후 저장을 누르면 B게시판의 뷰페이지에서는 불러온 값들이 안보여지네요. ㅜ.ㅜ. 글작성후 수정하기를 눌러도 안보이구요..ㅠ.ㅠ.
마르스컴퍼니
11개월 전
3. B게시판의 write.skin.php 파일의 form 태그 내부에 추가할 코드:
에 wr_1 히든 필드를 추가하면 될 것 같습니다.

<input type="hidden" name="apply_id" value="<?php echo $apply_id ?>">
<input type="hidden" name="apply_board" value="<?php echo $apply_board ?>">
->
<input type="hidden" name="wr_1" value="<?php echo $apply['wr_1'] ?>">
<input type="hidden" name="apply_id" value="<?php echo $apply_id ?>">
<input type="hidden" name="apply_board" value="<?php echo $apply_board ?>">

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

a
11개월 전

마르스컴퍼님 감사합니다. 첨부된 이미지값은 뷰페이지에 안나오지만 덕분에 잘 해결되었습니다..^^

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

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

11개월 전

제가봤을때 코드를 알려드려도 직접 적용하기엔 무리가 있어 보입니다.

의뢰로 가시면 2~3만원 정도면 해결될 문제이니 의뢰로 가보세요..

하루종일 고민할바에 이정도 금액이면 괜찮을것 같습니다.

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

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

꽁치입니다
11개월 전

아래 내용을 보시고 응용 하셔야 합니다.

</p>

<p><?php

// 현재 게시판의 테이블 이름을 설정합니다.

$table_name = 'g5_write_테이블명'; // 실제 테이블 이름으로 변경하세요.</p>

<p>// SQL 쿼리 작성

$sql = "SELECT wr_subject, wr_file FROM $table_name WHERE wr_id = '현재게시물ID'"; // 현재 게시물 ID에 맞게 수정

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

<p>// 데이터 초기화

$subject = '';

$upload_file = '';</p>

<p>// 결과가 있을 경우 데이터 가져오기

if ($row = sql_fetch_array($result)) {

    $subject = $row['wr_subject'];

    $upload_file = $row['wr_file']; // 업로드 파일명 가져오기

}

?></p>

<p><!-- HTML 폼 -->

<form action="작성처리.php" method="post" enctype="multipart/form-data">

    <label for="wr_subject">제목:</label>

    <input type="text" id="wr_subject" name="wr_subject" value="<?php echo htmlspecialchars($subject); ?>" required></p>

<p>    <label for="upload_file">업로드 파일:</label>

    <input type="file" id="upload_file" name="upload_file" accept="image/*">

    <?php if ($upload_file): ?>

        <p>현재 업로드된 파일: <img src="<?php echo htmlspecialchars($upload_file); ?>" alt="업로드된 이미지" style="max-width: 200px;"></p>

    <?php endif; ?></p>

<p>    <input type="submit" value="작성하기">

</form>

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

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

플라이
11개월 전

게시판의 내용과 어떤 기준으로 데이터를 가져올지를 알아야 대응이 가능한 부분이라
해당 기능에 대해 직접 작업이 어렵다면 제작의뢰나 쪽지로 문의 주시면 확인후 대응이 가능합니다.

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

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

e
11개월 전

A게시판에서 신청하기 할때 A게시판의 게시물 번호를 넘겨서

B게시판에서 해당 게시물번호로 A게시판의 내용을 불러오면 됩니다.

소스를 일일이 설명할순 없어서..

직접 안되시면 제작의뢰 하셔야할듯 하네요.

 

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

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

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

로그인