다중승인 게시판, 도와주세요

다중승인 게시판, 도와주세요

QA

다중승인 게시판, 도와주세요

본문

승인게시판을 만드느라고 고심중입니다.

업무는 현실적으로 각 단계에서 검토와 승인을 거칠수 밖에 없기 때문에 권한에 따라 상급자가 승인을 하고 표시되도록 하고자 합니다.

 

게시판 여분필드 bo_3에 조장|팀장|부장|이사를 옵션으로 넣어 두고,

여분필드 wr_3에 '|'로 구분해서 explode해서 조장|팀장|부장|이사 4명 각각의 승인여부에 따라 해당 구분공간에 '조', '팀', '부', '이'로 기록되거나 공백으로 두고, 
view 페이지에서 조장, 팀장, 부장, 이사 각각의 체크 상태를 승인버턴을 통해 승인/수정 하도록하고자 합니다.
list 페이지에서는 단순히 승인여부를 보여주도록 합니다.

write 페이지를 열어 승린자가 승인여부를 체크할 필요는 없지만, 아래와 같이 코드로 테스트해보니 잘 작동합니다.

 

write 화면

250693854_1611981657.8111.jpg

 

write.skin.php

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
// 승인
$wr3 = explode('|',$write['wr_3']);
$wr3_00  = $wr3[0];//팀장
$wr3_01  = $wr3[1];//부장
$wr3_02  = $wr3[2];//이사
$wr3_03  = $wr3[3];//법인장
?>
~~~~~~
    <div class="bo_w_tit write_div">
         <?php //shift1 로그인시 표시 
         if ($is_member && ($member['mb_level']>=6) ) { ?>
        <label for="wr3"> 승인 <i class="fas fa-users-cog"></i> </label>
        <?php } ?>
         <?php //shift1 로그인시 표시 
         if ($is_member && ($member['mb_id']=="shift1") or ($is_member && ($member['mb_level']>=6)) ) { ?>
         <input type="checkbox" name="wr3_00" value="조"<?php echo ($wr3_00 == "조") ? " checked" : "";?>> 조장
        <?php } ?>
         <?php //team1 로그인시 표시 
         if ($is_member && ($member['mb_id']=="team1") or ($is_member && ($member['mb_level']>=7)) ) { ?>
        <input type="checkbox" name="wr3_01" value="팀"<?php echo ($wr3_01 == "팀") ? " checked" : "";?>> 팀장
        <?php } ?>
         <?php //hyun or level8  이상 로그인시 표시 
         if ($is_member && ($member['mb_id']=="hyun") or ($is_member && ($member['mb_level']>=8)) ) { ?>
        <input type="checkbox" name="wr3_02" value="부"<?php echo ($wr3_02 == "부") ? " checked" : "";?>> 부장
        <input type="checkbox" name="wr3_03" value="이"<?php echo ($wr3_03 == "이") ? " checked" : "";?>> 이사
        <?php } ?>
</div>
~~~~

 

write_update.skin.php

<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 
// 승인
$wr_3 = "$wr3_00|$wr3_01|$wr3_02|$wr3_03";
$sql3 = " update {$write_table} set wr_3 = '{$wr_3}' where wr_id = '{$wr_id}' ";
sql_query($sql3);
?>

 

 

하지만 정작 필요한 것은 write 페이지를 승인자가 열어서 승인체크를 하는 것이아니라,
view 페이지에서 각 단계의 승인자가 승인 여부를 체크해야 할 것이기 때문에 view 페이지에서의 승인여부 체크를 처리하는 것이 되야 하는데,

write 페이지의 저 부분을 view 페이지에서 작동하도록 해야합니다.
가능하면 bo_3에 옵션으로 설정한 값을 view로 불러와서 체크박스를 구성해야 하는데, 이것도 잘 안되는군요.
조언 부탁드립니다. 

 

view 화면

250693854_1611981765.6962.jpg
 

view.skin.php

<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//include_once(G5_LIB_PATH.'/thumbnail.lib.php');
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
// 승인
$wr3 = explode('|',$view['wr_3']);
$wr3_00  = $wr3[0];//팀장
$wr3_01  = $wr3[1];//부장
$wr3_02  = $wr3[2];//이사
$wr3_03  = $wr3[3];//법인장
?>
~~~~~
<?php if ($write_href) { ?>
<div class="write_div" style="border-top: 1px solid #fb3;">
<form name="fwrite" id="fwrite" action="<?php echo $board_skin_url?>/view_write.php" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:<?php echo $width; ?>">
    <div class="write_div" style="margin-top:12px;">
         <?php //shift1 로그인시 표시 
         if ($is_member && ($member['mb_level']>=6) ) { ?>
        <label for="wr3"> 승인 <i class="fas fa-users-cog"></i> </label>
        <?php } ?>
         <?php //shift1 로그인시 표시 
         if ($is_member && ($member['mb_id']=="shift1") or ($is_member && ($member['mb_level']>=6)) ) { ?>
         <input type="checkbox" name="wr13_00" value="조"<?php echo ($wr3_00 == "조") ? " checked" : "";?>> 조장
        <?php } ?>
         <?php //team1 로그인시 표시 
         if ($is_member && ($member['mb_id']=="team1") or ($is_member && ($member['mb_level']>=7)) ) { ?>
        <input type="checkbox" name="wr3_01" value="팀"<?php echo ($wr3_01 == "팀") ? " checked" : "";?>> 팀장
        <?php } ?>
         <?php //hyun or level8  이상 로그인시 표시 
         if ($is_member && ($member['mb_id']=="hyun") or ($is_member && ($member['mb_level']>=8)) ) { ?>
        <input type="checkbox" name="wr3_02" value="부"<?php echo ($wr3_02 == "부") ? " checked" : "";?>> 부장
        <input type="checkbox" name="wr3_03" value="이"<?php echo ($wr3_03 == "이") ? " checked" : "";?>> 이사
        <?php } ?>
    <button type='submit' id='btn_submit' accesskey='s' class='btn_submit btn' style='margin:-8px 0 0 5px'>승인완료</button>
    </div>
</form>
<?php }?>
~~~~~~

view_write.php

<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//include_once("./_common.php");
// 승인
$wr_3 = "$wr3_00|$wr3_01|$wr3_02|$wr3_03";
$sql3 = " update {$write_table} set wr_3 = '{$wr_3}' where wr_id = '{$wr_id}' ";
sql_query($sql3);
?>


아래는 승인여부를 단순히 표시해주는 리스트 화면입니다.

 

list 화면

 

250693854_1611981610.9486.jpg

이 질문에 댓글 쓰기 :

답변 1

단순히 view에서 승인 표시만 이라면 아래처럼하면됩니다.

 

view.skin.php 님 코드를 아래처럼 수정

<form name="fwrite" id="fwrite" action="<?php echo $board_skin_url?>/view_write.php" onsubmit="return fwrite_submit(this);" method="post">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
    <div class="write_div" style="margin-top:12px;">
         <?php //shift1 로그인시 표시 
         if ($is_member && ($member['mb_level']>=6) ) { ?>
        <label for="wr3"> 승인 <i class="fas fa-users-cog"></i> </label>
        <?php } ?>
         <?php //shift1 로그인시 표시 
         if ($is_member && ($member['mb_id']=="shift1") or ($is_member && ($member['mb_level']>=6)) ) { ?>
         <input type="checkbox" name="wr3_00" value="Y"<?php echo ($wr3_00 == "Y") ? " checked" : "";?>> 조장
        <?php } ?>
         <?php //team1 로그인시 표시 
         if ($is_member && ($member['mb_id']=="team1") or ($is_member && ($member['mb_level']>=7)) ) { ?>
        <input type="checkbox" name="wr3_01" value="Y"<?php echo ($wr3_01 == "Y") ? " checked" : "";?>> 팀장
        <?php } ?>
         <?php //hyun or level8  이상 로그인시 표시 
         if ($is_member && ($member['mb_id']=="hyun") or ($is_member && ($member['mb_level']>=8)) ) { ?>
        <input type="checkbox" name="wr3_02" value="Y"<?php echo ($wr3_02 == "Y") ? " checked" : "";?>> 부장
        <input type="checkbox" name="wr3_03" value="Y"<?php echo ($wr3_03 == "Y") ? " checked" : "";?>> 이사
        <?php } ?>
    <button type='submit' id='btn_submit' accesskey='s' class='btn_submit btn' style='margin:-8px 0 0 5px'>승인완료</button>
    </div>
</form>

 

view_write.php 코드를 아래처럼 수정

<?php
// include_once('../../../../../common.php'); 
// 테마 폴더 스킨폴더 이용할때 위꺼 사용
include_once('../../../common.php');
$write_table = $_POST['bo_table'];
$wr_id = $_POST['wr_id'];
$wr3_00 = $_POST['wr3_00'];
$wr3_01 = $_POST['wr3_01'];
$wr3_02 = $_POST['wr3_02'];
$wr3_03 = $_POST['wr3_03'];
$wr_3 = "$wr3_00|$wr3_01|$wr3_02|$wr3_03";
$sql3 = " update g5_write_{$write_table} set wr_3 = '{$wr_3}' where wr_id = '{$wr_id}' ";
sql_query($sql3);
goto_url(G5_URL.'/'.$write_table.'/'.$wr_id);
?>

 

가능하면 bo_3에 옵션으로 설정한 값을 view로
불러와서 체크박스를 구성해야 하는데, 이것도 잘 안되는군요.
이건 무슨 말씀인지 이해 잘안되서....
참고로 bo_3은 이렇게 가져오면됩니다.

$bo3 = explode('|',$board['bo_3']);
$bo3_00  = $bo3[0];//팀장
$bo3_01  = $bo3[1];//부장
$bo3_02  = $bo3[2];//이사
$bo3_03  = $bo3[3];//법인장
// echo $bo3_00; // 결과 팀장

님 코드를 그대로 수정만 한겁니다 만
덧 붙이자면 승인이나면 버튼을 숨긴다던지 추가 설정이 필요해보입니다.
언제든 바꿔 버릴 수 있으니요. 간단히 아래 예 처럼
<?php if(!$wr3_02) { ?>
<button type='submit' id='btn_submit' accesskey='s' class='btn_submit btn' style='margin:-8px 0 0 5px'>승인완료</button>
<?php } ?>

안녕하세요. 도움을 받아 다중승인 게시판은 잘 작동합니다. 한데, view에서 승인이 이미 이뤄지고 난후, write에서 수정이 있을 경우, view에서 이미 승인된 값이 사라져버리네요. write에서 수정을 하더라도 view에서 이뤄진 승인값들이 사라지지않게 하는 방법을 좀 알려 주세요. 감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT