진행중인 전체 프로젝트 출력 페이지

어제 마신 술로 인한 숙취가 아직 가시지 않은 상태에서 출근을 했고 어떻게 하다보니 전체 프로젝트 출력페이지를 완성하게됐다.

사용자 삽입 이미지
프로젝트 게시판에 등록된 내용을 바탕으로 전체 프로젝트명과 그 프로젝트의 작업기간을 표시하도록 페이지를 만들었다.

게시판 스킨 작업 때 사용한 방법을 많이 사용했고 각 프로젝트별 시작일과 종료일을 구한 후 전체 프로젝트에서의 시작일, 종료일을
구하는 부분이 막혀서 시간이 걸렸다. 그외에 PHP 프로그램을 제대로 해본 적이 없고 MySQL 쿼리에 대해서도 잘 알지 못해서
DB의 데이터를 배열의 형태로 변수에 저장하는 부분에서 너무 많은 시간을 허비했다. 어제 만들다가 데이터를 받아오지 못하는
문제때문에 삽질을 많이 했는데.. 다행히 퇴근 전에 책을 보고 한 방법이 주효해서 아침에는 큰 어려움없이 예상보다 빨리 작업을
마칠 수가 있었다. 지금은 1차 완료가 된 상태이고 또 수정사항이 생기면 작업을 해야하겠지만 이걸 만든 내가 멋져보인다. ^^;

프로젝트명을 클릭하면 게시판의 view 창으로 이동을 해서 그 프로젝트의 상세작업 내역이 보이도록 구성을 했다.

아래 부분은 이번에 작성한 project.php 파일의 코드이다. 항상 말하지만 소스는 매우 허접하다. ^^;

<?
include_once(“./_common.php”);
include_once(“$g4[path]/lib/latest.lib.php”);

include_once(“./_head.php”);
?>

<?
    $bo_table = “test_01”;
    $write_table = “g4_write_”.$bo_table;

    //프로젝트 DB
    $sql = ” select * from $write_table where wr_1 = 0 order by wr_id asc “;
    $result = sql_query($sql);
    $ss = mysql_num_rows($result);
   
    $list = array();
    $proj_s = array();
    $proj_e = array();
   
    for($i=0; $row=sql_fetch_array($result); $i++) {
    $list[$i] = $row;
    }
   
    for($k=0; $k<$ss; $k++) {
    $ex3_field = explode(“|”,$list[$k][wr_3]);
    $ex4_field = explode(“|”,$list[$k][wr_4]);

   
    //시작날짜
    $start_day = $ex3_field[0];
    $tmp_day = $ex3_field[1];
    $j = 1;
    while($tmp_day) {
        $start_day = min($start_day, $tmp_day);
        $j++;
        $tmp_day = $ex3_field[$j];
    }
    //종료날짜
    $end_day = $ex4_field[0];
    $tmp_day = $ex4_field[1];
    $j = 1;
    while($tmp_day) {
        $end_day = max($end_day, $tmp_day);
        $j++;
        $tmp_day = $ex4_field[$j];
    }

    $proj_s[$k] = $start_day;
    $proj_e[$k] = $end_day;
    }
   
    $proj_start = min($proj_s);
    $proj_end = max($proj_e);

    $s_year = substr($proj_start, 0, 4);
    $s_month = substr($proj_start, 4, 2);
    if($s_month < 10) $s_month = substr($s_month, 1);
    $s_day = substr($proj_start, 6, 2);
    if($s_day < 10) $s_day = substr($s_day, 1);
   
    $e_year = substr($proj_end, 0, 4);
    $e_month = substr($proj_end, 4, 2);
    if($e_month < 10) $e_month = substr($e_month, 1);
    $e_day = substr($proj_end, 6, 2);
    if($e_day < 10) $e_day = substr($e_day, 1);

    $proj_day = (mktime(0, 0, 0, $e_month, $e_day, $e_year) – mktime(0, 0, 0, $s_month, $s_day, $s_year)) / 86400 + 1;

    $col_width = round(700/$proj_day);
   
?>
 <table width=900 cellpadding=0 cellspacing=0 border=0 align=center>
<tr><td height=2 bgcolor=#b0adf5 colspan=2></td></tr>
<tr><td style=’padding-left:10px’ height=38 bgcolor=#f8f8f9 colspan=3><strong>진행 중인 프로젝트 <?=$ss?>개</strong></td></tr>
<tr><td height=10 colspan=2></td></tr>

<tr height=30>
    <td width=200 align=center style=”border-left:#e7e7e7 1px solid;border-top:#e7e7e7 1px solid;” bgcolor=#f7f7f7 rowspan=3><strong>프로젝트</strong></td>
    <td width=700 align=center style=”border-left:#e7e7e7 1px solid;border-top:#e7e7e7 1px solid;border-right:#e7e7e7 1px solid;” bgcolor=#f7f7f7>작업일자</td>
</tr>
<tr>
    <td height=20 style=”padding-left:5px;border-left:#e7e7e7 1px solid;border-top:#e7e7e7 1px solid;border-right:#e7e7e7 1px solid;” bgcolor=#f8f8f9><?=$s_month?>월</td>
</tr>
<tr>
    <td>
    <table cellpadding=0 cellspacing=0 border=0>
        <tr>
<?     //전체 프로젝트 작업 달력 출력
    $border = “”;
    $md = $s_day;
    for($k=1; $k<=$proj_day; $k++) {
        if($k == $proj_day) $border = “border-right:#e7e7e7 1px solid;”;
        echo “<td width=$col_width height=20 style=’border-left:#e7e7e7 1px solid;border-top:#e7e7e7 1px solid;$border’ bgcolor=#f8f8f9 align=center>$md</td>”;
        $md++;
       
        $lastday=array(0,31,28,31,30,31,30,31,31,30,31,30,31);
        if ($s_year%4 == 0) $lastday[2] = 29;
        $end_md = $lastday[$s_month];
       
        if($end_md < $md) $md = 1;
    }
?>
        </tr>
    </table></td>
</tr>
<? //각 프로젝트명, 작업일 출력
for($i=0; $i<$ss; $i++) { ?>
<tr height=30>
    <td width=200 style=”border-left:#e7e7e7 1px solid;border-top:#e7e7e7 1px solid;padding:3px;”><a href=./bbs/board.php?bo_table=<?=$bo_table?>&wr_id=<?=$list[$i][wr_id]?>><strong><?=$list[$i][wr_subject]?></strong></a></td>
    <td style=”border-top:#e7e7e7 1px solid;border-right:#e7e7e7 1px solid;” align=center>
    <table cellpadding=0 cellspacing=0 border=0>
        <tr>
<?
    $md = $proj_start;
    $bgcolor = “”;
    $border = “”;
    $fontcolor=”#ffffff”;
    $tmp_date = $proj_s[$i];
    $tmp_date1 = $proj_e[$i];
    $dd = $s_day;
   
    for($k=0; $k<$proj_day; $k++) {
        if($k == $proj_day) $border = “border-right:#e7e7e7 1px solid;”;
        if($md >= $tmp_date) $bgcolor = “bgcolor=#7F9EEF”;
        if($md > $tmp_date1) $bgcolor = “”;
        if($md &
gt;= $tmp_date) $fontcolor = “#7F9EEF”;
        if($md > $tmp_date1) $fontcolor = “#ffffff”;
        echo “<td width=$col_width height=30 $bgcolor align=center style=’border-left:#e7e7e7 1px solid;$border’><font color=$fontcolor>$dd</font></td>”;
        $md = date(“Ymd”, mktime(0,0,0,$s_month  , $s_day+$k+1, $s_year));
        $dd++;

        $lastday=array(0,31,28,31,30,31,30,31,31,30,31,30,31);
        if ($s_year%4 == 0) $lastday[2] = 29;
        $end_md = $lastday[$s_month];
       
        if($end_md < $dd) $dd = 1;
       
    }
?>
        </tr>
    </table>
    </td>
</tr>
<? } ?>

<tr><td colspan=2 height=1 bgcolor=#E7E7E7></td></tr>
<tr><td width=900 align=center height=30 colspan=2></td></tr>
<tr><td width=900 height=10 background=”<?=$g4[‘path’]?>/img/copyright.gif” colspan=2></td></tr>
</table>

<?
include_once(“./_tail.php”);
?>

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.