특정게시판의 내용을 다른게시판으로 연결하고 싶습니다. 채택완료
안녕하세요? 첨부이미지와 같이 구현할려고 하는데요.
A게시판의 내용중 일부(여분필드, 첨부이미지)를 신청하기 시 B게시판으로 연결하여 A게시판 일부 내용을 그대로 끌어온 후 글쓰기를 구현 하고 싶은데
초보자인 저로서는 많이 어렵네요.. 고수님들 답변을 얻을수 있을까요?.
추가로 카테고리(분류)가 있을경우 분류도 끌어올수 있나요?http://sir.kr/data/editor/2411/1935377306_1732059849.8356.jpg" width="100%" />
답변 6개
꽤 복잡한 로직으로 보입니다.
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개
에 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 ?>">
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
제가봤을때 코드를 알려드려도 직접 적용하기엔 무리가 있어 보입니다.
의뢰로 가시면 2~3만원 정도면 해결될 문제이니 의뢰로 가보세요..
하루종일 고민할바에 이정도 금액이면 괜찮을것 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
아래 내용을 보시고 응용 하셔야 합니다.
</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>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
하나만 더 도와주심 안될까요?..
A게시판에서 신청하기 후 b게시판에 불러오고 나머지 글을 쓴 후 저장을 누르면 B게시판의 뷰페이지에서는 불러온 값들이 안보여지네요. ㅜ.ㅜ. 글작성후 수정하기를 눌러도 안보이구요..ㅠ.ㅠ.