이런 구동은 안되나요?
본문
저는 이렇게 하고 싶어요 인쇄를 할때 임시적으로 제목을 선택하고 인쇄하고 싶은데....
선택하고 인쇄하면 선택이 풀려져서 인쇄창이 뜹니다. 제생각은 새로고침 때문에 풀리는 현상 때문인거 같은데 선택란이 임시적으로 고정되어서 인쇄를 할 수 있게끔 할수가 없나요?
답변 5
가능해요. 선택값을 지정할 수 잇습니다.
편의상
분기를 선택하는 화면을 "선택.php"이라 하고
인쇄 화면에 뜬 화면을 "인쇄.php"라고 하겠습니다.
선택.php에서 인쇄.php로 어떤 방식으로 전달하느냐에 따라 차이가 있을텐데요.
관리자 화면이고, 이쁘지 않아도 되는, 기능적으로 충실한 화면이면 되기때문에
아마도 iframe에 인쇄.php가 숨겨져있고,
그곳에 인쇄 화면처럼 HTML을 구성한 후 print()함수를 호출하는 방식일거라고 추측이 됩니다.
틀림없이 선택.php에서 선택한 Select값(분기값)은 전달이 되었을거구요.
전달되었으니 분기에 맞는 리스트가 나타나고 있는겁니다.
이걸 전제로 설명을 드리자면,
// 인쇄.php
<?php
$bungiValue = $_REQUEST["bungi"]; //선택.php에서 전달한 bungi 파라메터를 $bungiValue에 받는다.
?>
<script>
$("#분기선택").val( "<?php echo $bungiValue; ?>" ); // 인쇄.php의 분기 셀렉트 창을 자동으로 선택되게 한다.
</script>
이와 같은 방식이 될 것입니다.
그런데요...
일반적으로 인쇄화면에서는 Select를 띄우지 않고,
전달받은 값이 있기때문에 바로 "[1분기] 2020년 1월" 이라고 텍스트를 출력하는게 일반적이죠.
그리고 다음 질문 주실때는,
일부 소스라도 올려주셔야 더욱 좋은 답변을 받으실 수 있답니다.
!-->
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 게시물 번호 1번부터 시작
$notice_count = 0;
if ($board['bo_notice']) $notice_count = $board_notice_count;
if ($notice_count)
$list_num = (($page - 1) * $list_page_rows - $notice_count) + 1;
else
$list_num = ($page - 1) * ($list_page_rows - $notice_count) + 1;
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
add_stylesheet('<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">', 0);
include('tagCol.php');
if($sfl==$tagCol){
$tag = $stx;
$stx ='';
}
?>
<?
if($list[$i][$tagCol]){
$tags = explode(',',$list[$i][$tagCol]);
for($k=0; $k<count($tags); $k++){
?>
<a <?if($tag == $tags[$k]){ echo'class="onTag"'; }?> href="board.php?bo_table=<?=$bo_table?>&sfl=<?=$tagCol?>&stx=<?=$tags[$k]?>"><?=$tags[$k]?>
</a>
<?
}
}
?>
<div id="bo_list" style="width:<?php echo $width; ?> font-size: 24px; font-weight: bold;">
<!-- 게시판 페이지 정보 및 버튼 시작 { -->
<div id="bo_btn_top">
<div id="bo_list_total">
<span>Total <?php echo number_format($total_count) ?>건</span>
<?php echo $page ?> 페이지
</div>
<?php if ($rss_href || $write_href) { ?>
<ul class="btn_bo_user">
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn"><i class="fa fa-rss" aria-hidden="true"></i> RSS</a></li><?php } ?>
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn"><i class="fa fa-user-circle" aria-hidden="true"></i> 관리자</a></li><?php } ?>
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b02 btn"><i class="fa fa-pencil" aria-hidden="true"></i> 글쓰기</a></li><?php } ?>
</ul>
<?php } ?>
</div>
<!-- } 게시판 페이지 정보 및 버튼 끝 -->
<!-- 게시판 카테고리 시작 { -->
<?php if ($is_category) { ?>
<nav id="bo_cate">
<h2><?php echo $board['bo_subject'] ?> 카테고리</h2>
<ul id="bo_cate_ul">
<?php echo $category_option ?>
</ul>
</nav>
<?php } ?>
<!-- } 게시판 카테고리 끝 -->
<!-- } 게시판 카테고리 전체 삭제 시작 -->
<script>
// 인쇄.php
<?php
$bungiValue = $_REQUEST["bungi"]; //선택.php에서 전달한 bungi 파라메터를 $bungiValue에 받는다.
?>
<script>
$("#분기선택").val( "<?php echo $bungiValue; ?>" ); // 인쇄.php의 분기 셀렉트 창을 자동으로 선택되게 한다.
$('#bo_cate_on').css('display','none');
</script>
<!-- } 게시판 카테고리 전체 삭제 끝 -->
<form name="fboardlist" id="fboardlist" action="./board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="spt" value="<?php echo $spt ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="sw" value="">
<!-- 인쇄 버튼 -->
<!-- 인쇄 버튼 끝 -->
<th align="center"> </th>
<!-- 인쇄 영역 부분 -->
<div id="box">
<div class="tbl_head01 tbl_wrap">
<table border="2" cellpadding="0" cellspacing="0">
<caption>
<?php echo $board['bo_subject'] ?> 목록
</caption>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr style="
border-top: black;
"></tr>
</table>
<table width="796" border="0" cellspacing="0" cellpadding="0">
<tr></tr>
</table>
<style type="text/css">
.h {
font-weight: bold;
color: #000;
font-size: 36px;
}
</style>
<!-- 제목 시작 -->
<div class="h" style="font-size: 36px; text-align: center"><span class="qw">동료상담 대장(<strong style="text-align: center; font-size: 36px;"><strong style="text-align: center; font-size: 36px;">
<select name="bungi">
<option value="바나나">바나나</option>
<option value="사과">사과</option>
<option value="파인애플" selected="selected">파인애플</option>
</select>
</strong></strong>)</span></div>
<!-- 제목 끝 -->
<table border="1" cellpadding="0" cellspacing="0">
<thead style="
border-top: black;
">
<tr></tr>
<th align="center" scope="col">No</th>
<th width="56" align="center" scope="col">월/일</th>
<th width="51" align="center" scope="col">시간(분)</th>
<th width="68" align="center" scope="col">이용자</th>
<th width="42" align="center" scope="col">회차</th>
<th width="143" align="center" scope="col">장애유형 및 장애정도</th>
<th width="65" align="center" scope="col">상담방법</th>
<th width="64" align="center" scope="col">상담유형</th>
<th width="159" align="center" scope="col">상담목적</th>
<th width="20" align="center" scope="col">지원내용</th>
<th width="14" align="center" scope="col">진행형태</th>
<th width="100" align="center" scope="col">이용자 코드</th>
</tr>
</thead>
<tbody>
<?php
for ($i=0; $i<count($list); $i++) {
//여분필드 이름 별표 표시 시작
if (!$is_admin && $list[$i]['wr_4']) {
$list[$i]['wr_4'] = preg_replace('/-(\d+)-/e',"'-'.str_repeat('*',strlen('\\1')).'-'",$list[$i]['wr_4']); }
//여분필드 이름 별표 표시 끝
$list[$i]['num'] = $list_num + $i;
?>
<tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?>">
<?php if ($is_checkbox) { ?>
<?php } ?>
<td width="30" align="center" class="td_num2"><?php
if ($list[$i]['is_notice']) // 공지사항
echo '<strong class="notice_icon"><i class="fa fa-bullhorn" aria-hidden="true"></i><span class="sound_only">공지</span></strong>';
else if ($wr_id == $list[$i]['wr_id'])
echo "<span class=\"bo_current\">열람중</span>";
else
echo $list[$i]['num'];
?></td>
<td align="center" class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><span class="tagInfo">
<?
if($list[$i][$tagCol]){
$tags = explode(',',$list[$i][$tagCol]);
for($k=0; $k<count($tags); $k++){
?>
<a <?if($tag == $tags[$k]){ echo'class="onTag"'; }?> href="../board.php?bo_table=<?=$bo_table?>&sfl=<?=$tagCol?>&stx=<?=$tags[$k]?>">
<?=$tags[$k]?>
</a>
<?
}
}
?>
<span class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><?php echo $list[$i]['wr_19'] ?></span>일</span></td>
<td align="center" class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><?php echo $list[$i]['wr_5'] ?></td>
<td align="center" class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><span class="tagInfo">
<?
if($list[$i][$tagCol]){
$tags = explode(',',$list[$i][$tagCol]);
for($k=0; $k<count($tags); $k++){
?>
<a <?if($tag == $tags[$k]){ echo'class="onTag"'; }?> href="board.php?bo_table=<?=$bo_table?>&sfl=<?=$tagCol?>&stx=<?=$tags[$k]?>"><?=$tags[$k]?>
</a>
<?
}
}
?>
</span>
<td align="center" class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><?php echo $list[$i]['wr_3'] ?></td>
<td align="center" class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><?php echo $list[$i]['wr_9'] ?></td>
<td align="center" class="td_name sv_use" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><span class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><?php echo $list[$i]['wr_20'] ?></span><?php echo $list[$i]['wr_15']; ?></td>
<td align="center" class="td_name sv_use" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><span class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><?php echo $list[$i]['wr_21'] ?></span><?php echo $list[$i]['wr_16']; ?></td>
<td align="center" class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px"><div class="bo_tit"> <a href="<?php echo $list[$i]['href'] ?>"> <?php echo $list[$i]['icon_reply'] ?>
<?php
if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);
?>
<?php echo $list[$i]['subject'] ?></a>
<?php if ($list[$i]['comment_cnt']) { ?>
<span class="sound_only">댓글</span><span class="cnt_cmt">+ <?php echo $list[$i]['wr_comment']; ?></span><span class="sound_only">개</span>
<?php } ?>
</div></td>
<td align="center" class="td_name sv_use"><?php echo $list[$i]['wr_22']; ?><?php echo $list[$i]['wr_17']; ?></td>
<td align="center" class="td_name sv_use"><?php echo $list[$i]['wr_23']; ?><?php echo $list[$i]['wr_18']; ?></td>
<td align="center" class="td_name sv_use"><span class="tagInfo">
<?
if($list[$i][$tagCol2]){
$tags = explode(',',$list[$i][$tagCol2]);
for($k=0; $k<count($tags); $k++){
?>
<a <?if($tag == $tags[$k]){ echo'class="onTag"'; }?> href="../board.php?bo_table=<?=$bo_table?>&sfl=<?=$tagCol2?>&stx=<?=$tags[$k]?>">
<?=$tags[$k]?>
</a>
<?
}
}
?>
</span></td>
<?php if ($is_good) { ?>
<?php } ?>
<?php if ($is_nogood) { ?>
<?php } ?>
</tr>
<?php } ?>
<?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table">게시물이 없습니다.</td></tr>'; } ?>
</tbody>
</table>
<br />
<p><?php echo $list[$i]['wr_1'] ?></p>
</div>
</div>
<!-- 인쇄하는 영역 끝 -->
<!-- 인쇄 자바스크립트 -->
<script type="text/javascript">
var initBody;
function beforePrint() {
boxes = document.body.innerHTML;
document.body.innerHTML = box.innerHTML;
}
function afterPrint() {
document.body.innerHTML = boxes;
}
function printArea() {
window.print();
}
window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;
</script>
<!-- 인쇄 자바스크립트 끝 -->
<?php if ($list_href || $is_checkbox || $write_href) { ?>
<div class="bo_fx">
<?php if ($list_href || $write_href) { ?>
<ul class="btn_bo_user">
<?php if ($is_checkbox) { ?>
<li>
<button type="submit" name="btn_submit" value="선택복사" onclick="document.pressed=this.value" class="btn btn_admin"><i class="fa fa-files-o" aria-hidden="true"></i> 선택복사</button>
</li>
<li>
<button type="submit" name="btn_submit" value="선택이동" onclick="document.pressed=this.value" class="btn btn_admin"><i class="fa fa-arrows" aria-hidden="true"></i> 선택이동</button>
</li>
<?php } ?>
<?php if ($list_href) { ?>
<li><a href="<?php echo $list_href ?>" class="btn_b01 btn"><i class="fa fa-list" aria-hidden="true"></i> 목록</a></li>
<?php } ?>
<?php if ($write_href) { ?>
<li><a href="<?php echo $write_href ?>" class="btn_b02 btn"><i class="fa fa-pencil" aria-hidden="true"></i> 글쓰기</a><span class="tbl_head01 tbl_wrap"><a href="#" onclick="printArea()">인쇄하기</a></span></li>
<?php } ?>
</ul>
<?php } ?>
</div>
<?php } ?>
</form>
<!-- 게시판 검색 시작 { -->
<fieldset id="bo_sch">
<legend>게시물 검색</legend>
<form name="fsearch" method="get">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sop" value="and">
<label for="sfl" class="sound_only">검색대상</label>
<select name="sfl" id="sfl">
<option value="wr_subject"<?php echo get_selected($sfl, 'wr_subject', true); ?>>제목</option>
<option value="wr_content"<?php echo get_selected($sfl, 'wr_content'); ?>>내용</option>
<option value="wr_subject||wr_content"<?php echo get_selected($sfl, 'wr_subject||wr_content'); ?>>제목+내용</option>
<option value="mb_id,1"<?php echo get_selected($sfl, 'mb_id,1'); ?>>회원아이디</option>
<option value="mb_id,0"<?php echo get_selected($sfl, 'mb_id,0'); ?>>회원아이디(코)</option>
<option value="wr_name,1"<?php echo get_selected($sfl, 'wr_name,1'); ?>>글쓴이</option>
<option value="wr_name,0"<?php echo get_selected($sfl, 'wr_name,0'); ?>>글쓴이(코)</option>
</select>
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
<button type="submit" value="검색" class="sch_btn"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>
</form>
</fieldset>
<!-- } 게시판 검색 끝 -->
</div>
<?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
</noscript>
<?php } ?>
<!-- 페이지 -->
<?php echo $write_pages; ?>
<?php if ($is_checkbox) { ?>
<script>
function all_checked(sw) {
var f = document.fboardlist;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]")
f.elements[i].checked = sw;
}
}
function fboardlist_submit(f) {
var chk_count = 0;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
chk_count++;
}
if (!chk_count) {
alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
return false;
}
if(document.pressed == "선택복사") {
select_copy("copy");
return;
}
if(document.pressed == "선택이동") {
select_copy("move");
return;
}
if(document.pressed == "선택삭제") {
if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))
return false;
f.removeAttribute("target");
f.action = "./board_list_update.php";
}
return true;
}
// 선택한 게시물 복사 및 이동
function select_copy(sw) {
var f = document.fboardlist;
if (sw == "copy")
str = "복사";
else
str = "이동";
var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
f.sw.value = sw;
f.target = "move";
f.action = "./move.php";
f.submit();
}
</script>
<?php } ?>
<!-- } 게시판 목록 끝 -->
되지 않습니다 ㅠㅠ 죄송해요 아무리 찾아봐도 해결이 되지않습니다 ㅠㅠ
답변으로 올리신 파일은 인쇄.php인거죠?
$bungiValue = $_REQUEST["bungi"]; //선택.php에서 전달한 bungi 파라메터를 $bungiValue에 받는다.
==> ["bungi"] 쌍따음표 사이에 분기를 전달해주는 파라메터의 이름을 입력해주세요.
$("#분기선택").val( "<?php echo $bungiValue; ?>" ); // 인쇄.php의 분기 셀렉트 창을 자동으로 선택되게 한다.
==> 위에 올려준 소스상에 바나나, 사과, 파인애플을 넣어두신 곳이 분기가 표시하는 곳이라고 가정할때
==> 위 코딩은 아래와 같이 바뀌어야 합니다.
1. select 태그에 id값 추가
2. id값을 이용해 값을 지정
3. 위 코딩을 select 태그 아래로 위치 변경
4. 아래와 같이 수정 (id값을 #뒤에 써야 함에 주의)
<div class="h" style="font-size: 36px; text-align: center"><span class="qw">동료상담 대장(<strong style="text-align: center; font-size: 36px;"><strong style="text-align: center; font-size: 36px;">
<select name="bungi" id="bungi">
<option value="바나나">바나나</option>
<option value="사과">사과</option>
<option value="파인애플" selected="selected">파인애플</option>
</select>
</strong></strong>)</span></div>
<script>
$("#bungi").val( "<?php echo $bungiValue; ?>" );
</script>