진행중인 전체 프로젝트 출력 페이지
어제 마신 술로 인한 숙취가 아직 가시지 않은 상태에서 출근을 했고 어떻게 하다보니 전체 프로젝트 출력페이지를 완성하게됐다.
프로젝트 게시판에 등록된 내용을 바탕으로 전체 프로젝트명과 그 프로젝트의 작업기간을 표시하도록 페이지를 만들었다.
게시판 스킨 작업 때 사용한 방법을 많이 사용했고 각 프로젝트별 시작일과 종료일을 구한 후 전체 프로젝트에서의 시작일, 종료일을
구하는 부분이 막혀서 시간이 걸렸다. 그외에 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”);
?>