채택완료

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

2021-01-30 (토) 13:45:02 4,230

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

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

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

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

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

write 화면

250693854_1611981657.8111.jpg

write.skin.php

Copy
<?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>&nbsp;</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

Copy
<?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

Copy
<?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>&nbsp;</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

Copy
<?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개 / 댓글 6개

채택된 답변
+20 포인트

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

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

Copy
<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 코드를 아래처럼 수정

Copy
<?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은 이렇게 가져오면됩니다.

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

답변에 대한 댓글 6개

아주 잘 작동합니다. 너무너무 감사합니다. 즐거운 주말되십시오.
님 코드를 그대로 수정만 한겁니다 만
덧 붙이자면 승인이나면 버튼을 숨긴다던지 추가 설정이 필요해보입니다.
언제든 바꿔 버릴 수 있으니요. 간단히 아래 예 처럼
<?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에서 이뤄진 승인값들이 사라지지않게 하는 방법을 좀 알려 주세요. 감사합니다.
write.skin.php에도 이래처럼 모두 넣으세요
<input type="checkbox" name="wr3_00" value="Y"<?php echo ($wr3_00 == "Y") ? " checked" : "";?>> 조장
감사합니다. 너무너무 고맙습니다.

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