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

다중승인 게시판, 도와주세요 채택완료

그누구나 4년 전 조회 4,043

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

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

 

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

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

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

 

write 화면

 

write.skin.php

<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p>// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨

add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);</p>

<p>// 승인

$wr3 = explode('|',$write['wr_3']);

$wr3_00  = $wr3[0];//팀장

$wr3_01  = $wr3[1];//부장

$wr3_02  = $wr3[2];//이사

$wr3_03  = $wr3[3];//법인장

?></p>

<p>~~~~~~</p>

<p>    <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></p>

<p>~~~~

 

write_update.skin.php

<?php

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 </p>

<p>// 승인

$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);</p>

<p>?>

 

 

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

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

 

view 화면

 

view.skin.php

<?php

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

//include_once(G5_LIB_PATH.'/thumbnail.lib.php');</p>

<p>// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨

add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);</p>

<p>// 승인

$wr3 = explode('|',$view['wr_3']);

$wr3_00  = $wr3[0];//팀장

$wr3_01  = $wr3[1];//부장

$wr3_02  = $wr3[2];//이사

$wr3_03  = $wr3[3];//법인장

?></p>

<p>~~~~~</p>

<p><?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 }?></p>

<p>~~~~~~

view_write.php

<?php

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

//include_once("./_common.php");</p>

<p>// 승인

$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);</p>

<p>?>

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

 

list 화면

 

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

답변 1개

채택된 답변
+20 포인트

단순히 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'];</p>

<p>$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);</p>

<p>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; // 결과 팀장

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

답변에 대한 댓글 6개

그누구나
4년 전
아주 잘 작동합니다. 너무너무 감사합니다. 즐거운 주말되십시오.
열공중
4년 전
님 코드를 그대로 수정만 한겁니다 만
덧 붙이자면 승인이나면 버튼을 숨긴다던지 추가 설정이 필요해보입니다.
언제든 바꿔 버릴 수 있으니요. 간단히 아래 예 처럼
<?php if(!$wr3_02) { ?>
<button type='submit' id='btn_submit' accesskey='s' class='btn_submit btn' style='margin:-8px 0 0 5px'>승인완료</button>
<?php } ?>
그누구나
4년 전
아,그렇군요.너무감사합니다.
그누구나
4년 전
안녕하세요. 도움을 받아 다중승인 게시판은 잘 작동합니다. 한데, view에서 승인이 이미 이뤄지고 난후, write에서 수정이 있을 경우, view에서 이미 승인된 값이 사라져버리네요. write에서 수정을 하더라도 view에서 이뤄진 승인값들이 사라지지않게 하는 방법을 좀 알려 주세요. 감사합니다.
열공중
4년 전
write.skin.php에도 이래처럼 모두 넣으세요
<input type="checkbox" name="wr3_00" value="Y"<?php echo ($wr3_00 == "Y") ? " checked" : "";?>> 조장
그누구나
4년 전
감사합니다. 너무너무 고맙습니다.

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

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

로그인