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

스킨 수정 도와 주세요. 채택완료

시엔라이프 6년 전 조회 3,448

안녕하세요? 좀 오래 된 스킨을 다운 받아 사용하려고 하니 오류 메세지 해결과 메모 추가를 하려고 하는데요. 좀 도와 주실 수 있나요? 스킨 게시글은 아래와 같습니다. https://sir.kr/g5_skin/2426">https://sir.kr/g5_skin/2426 오류 내용은 출근 시각을 클릭하면 Warning: date() expects parameter 2 to be integer, string given in ~~ 이 에러가 떠서 달력을 엉망으로 만들고 다시 퇴근시각을 클릭하면 없어집니다. 도움 받을 내용 하나는 출근 클릭시 에러 해결과

해당 일자에 텍스트 메모를 받을 인프트를 넣고 싶습니다. 고수님들께서 좀 도와 주십시오. 소스는 아래와 같습니다.

function insert_0($num) {  if($num < 10) $num = "0".$num;  Return $num; } if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// --------------------------------------------------------------------------- // // START : 달력의 디자인 및 해당월, 시작요일 등을 구하는 변수값 선언             // // --------------------------------------------------------------------------- //

// 국공휴일 설정 $holiday_arr = array("0101", "0301", "0505", "0606", "0815", "1003", "1009", "1225");

//테이블 테두리 칼라 $bordercolordark="#FFF"; $bordercolorlight="black";

//테이블 크기 $cal_width = "100%"; $cal_td_width ="14%"; $cal_td_height_top="5"; $cal_td_height="80";

//오늘날짜 색 $today_color="black"; $today_out_color="#A99B6A"; $today_over_color="#CAA753";

//일요일 색 $sun_color="red"; $sun_bgcolor="#F0EED9"; $sun_out_color="#F5B5B5"; $sun_over_color="#A99B6A";

//토요일 색 $sat_color="#3385D9"; $sat_bgcolor="#F0EED9"; $sat_out_color="#8BB7D1"; $sat_over_color="#A99B6A";

//나머지 날짜 색 $else_td_color="#E0DEC9"; $else_color="#666"; $else_bgcolor="#F0EED9"; $else_out_color="#FDF9ED"; $else_over_color="#A99B6A";

//한달의 총 날짜 계산 함수 function Month_Day_big($i_month,$i_year){  $day=1;  while(checkdate($i_month,$day,$i_year)){   $day++;  }  $day--;  return $day; }

//오늘 날짜를 년월일별로 구하기 $today=date("Ymd"); $today_year=date("Y"); $today_month=date("m"); $today_day=date("d");

//month와 year의 변수값이 지정되어있지 않으면 오늘로 지정. if(!$month)$month=(int)$today_month; if(!$year)$year=$today_year;

//선택한 월의 총 일수를 구함. $total_day_big=Month_Day_big($month,$year);

//선택한 월의 1일의 요일을 구함. 일요일은 0. $first_big=date(w,mktime(0,0,0,$month,1,$year));

//지난달과 다음달을 보는 루틴 $year_p=$year-1; $year_n=$year+1; if($month==1){ $year_prev=$year_p; $year_next=$year; $month_prev=12; $month_next=$month+1; } if($month==12){ $year_prev=$year; $year_next=$year_n; $month_prev=$month-1; $month_next=1; } if($month!=1 && $month!=12){ $year_prev=$year; $year_next=$year; $month_prev=$month-1; $month_next=$month+1; } $v_day = array("일","월","화","수","목","금","토"); // --------------------------------------------------------------------------- // // END : 달력의 디자인 및 해당월, 시작요일 등을 구하는 변수값 선언             // // --------------------------------------------------------------------------- // ?>

 

      

//count는

태그를 넘기기위한 변수. 변수값이 7이되면 태그를 삽입한다. $count=0;

//첫번째 주에서 빈칸을 1일전까지 빈칸을 삽입 for($i=0; $i<$first_big; $i++){ echo "

"; $count++; }

// --------------------------------------------- // // START : 날짜를 테이블에 표시                  // // --------------------------------------------- // for($day=1;$day<=$total_day_big;$day++) {  $count++;    //오늘일 경우 셀 디자인 표시  if($day==$today_day && $month==$today_month && $year==$today_year){  $m_out_color=$today_out_color;  $m_over_color=$today_over_color;  $day_color=$today_color;  $ck_holiday = 0;  $ck_today = 1;  }  //오늘 아닐경우  else {  //일요일  if ($count==1){  $m_out_color=$sun_out_color;  $m_over_color=$sun_over_color;  $day_color=$sun_color;  $ck_holiday = 1;  }  //토요일  elseif ($count==7){  $m_out_color=$sat_out_color;  $m_over_color=$sat_over_color;  $day_color=$sat_color;  $ck_holiday = 0;  }  //평일  else {  $m_out_color=$else_out_color;  $m_over_color=$else_over_color;  $day_color=$else_color;  $ck_holiday = 0;  }

 //기타공휴일  $h_m = sprintf("%02d",$month);  $h_d = sprintf("%02d",$day);  $h_day=$h_m.$h_d;  for($h=0;sizeof($holiday_arr)>$h;$h++){   //echo $h_day;   //echo $holiday_arr[$h];   if($holiday_arr[$h] ==$h_day) {    $m_out_color=$sun_out_color;    $m_over_color=$sun_over_color;    $day_color=$sun_color;    $ck_holiday = 1;   }  } }

// 일자구분 echo "

"; //마지막주의 경우 if($count==7 && $day == $total_day_big ){ echo""; } //토요일이 되면 줄바꾸기 위한 태그 삽입 elseif($count==7){ echo ""; $count=0; }

}

//월,년 총 근무시간 echo "

";

// 본인의 경로에 맞게 수정 echo "

"; //echo "
".solar::solar(mktime(0,0,0,$month,$day))."
"; echo "
"; ?>

"; echo "

";

// 출퇴근 날짜 뿌리주기 /**********/ $query = "SELECT * FROM $write_table WHERE mb_id = '$member[mb_id]' and wr_datetime LIKE '%".$year."-".insert_0($month)."-".insert_0($day)."%' limit 1"; $result = sql_query($query); $data = sql_fetch_array($result); //or die ("쿼리문 에러!!!");

$attendance = date("H:i",$data[wr_link1]); $closing = date("H:i",$data[wr_link2]);  

if($ck_today) {  // 출근시간 버튼  if($data[wr_link1]){   //$attendance = date("H:i",$data[wr_link1]);

  //퇴근시간 버튼    if(!$data[wr_link2]) $closing = "";    //else $closing = date("H:i",$data[wr_link2]);    }else{   $attendance = "";   $closing = "";   } }

if(!$data[wr_link1] and !$ck_today) echo "

"; else echo "
출근 : $attendance 퇴근 : $closing ";

if(!$data[wr_link2]) echo ""; else echo " 근무시간:$time_diff

";

$ck_today = 0;

//연간 누적 근무시간구하는 쿼리문 $query2 = "select mb_id = '$member[mb_id]', sum(wr_link1_hit) from $write_table where mb_id = '$member[mb_id]' and wr_datetime LIKE '%".$year."%' limit 1"; $result2 = sql_query($query2); $data2 = sql_fetch_array($result2); //or die ("쿼리문 에러!!!");

//월 근무일수 구하기 $wday_query = "SELECT COUNT(wr_link1_hit) FROM $write_table where mb_id = '$member[mb_id]' and wr_datetime LIKE '%".$year."-".insert_0($month)."%' limit 1"; //echo $wday_query; $wday_result = sql_query($wday_query); $wday_data = sql_fetch_array($wday_result);

//연간 근무일수 구하기 $yday_query = "SELECT COUNT(wr_link1_hit) FROM $write_table where mb_id = '$member[mb_id]' and wr_datetime LIKE '%".$year."%' limit 1"; $yday_result = sql_query($yday_query); $yday_data = sql_fetch_array($yday_result);

//근무시간구하기 $date2 = $data[wr_link1];

$total_secs=abs($date1-$date2); $diff_in_days = floor($total_secs / 86400);

$rest_hours = $total_secs % 86400; $diff_in_hours = floor($rest_hours / 3600);

$rest_mins = $rest_hours % 3600; $diff_in_mins = floor($rest_mins / 60); $diff_in_secs = floor($rest_mins % 60);

$time_diff = (int)$diff_in_hours ."시간 ".$diff_in_mins ."분 ";;

//월간 총 근무시간구하는 쿼리문 $query1 = " update $write_table set wr_link1_hit = '$time_diff' where wr_id = '$data[wr_id]' "; $result1 = sql_query($query1); $data1 = sql_fetch_array($result1); //or die ("쿼리문 에러!!!"); //echo $query1;

$mon_query = "select mb_id = '$member[mb_id]', sum(wr_link1_hit) from $write_table where mb_id = '$member[mb_id]' and wr_datetime LIKE '%".$year."-".insert_0($month)."%' limit 1"; //echo $mon_query; $mon_rs = sql_query($mon_query); $mon_data = sql_fetch_array($mon_rs);

/**********/ // 출퇴근 날짜 뿌리주기

echo "

";   echo $member[mb_name]."님 ".$year."년 ".$month."월 근무일수 : ".$wday_data[0]."일";   echo " ";   echo $member[mb_name]."님 ".$year."년 ".$month."월 근무시간 : ".$mon_data[1]."시간 ";   if($mon_data[1]>226) echo "(초과근무 : ".($mon_data[1]-226)."시간)"; else echo "(초과근무: -시간)";   echo " ";   echo $member[mb_name]."님 ".$year."년간 누적 근무일수:".$yday_data[0]."일";   echo " ";   echo $member[mb_name]."님 ".$year."년간 누적 근무시간 :".$data2[1]."시간"; echo "
"; // --------------------------------------------- // // END : 날짜를 테이블에 표시                    // // --------------------------------------------- // ?> "; $count++; } echo "";

 

 

?>

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

답변 2개

채택된 답변
+20 포인트
o
6년 전

하단에 보시면 아래 부분이 있습니다 

{$memo}를 추가하셔야 합니다 

아래 내용으로 교체하시면 됩니다

 

if(!$data[wr_link1] and !$ck_today) echo "

"; else echo "
출근 : $attendance 퇴근 : $closing {$memo}";

if(!$data[wr_link2]) echo ""; else echo " 근무시간: $time_diff

";

$ck_today = 0; /**********/ // 출퇴근 날짜 뿌리주기

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

답변에 대한 댓글 1개

시엔라이프
6년 전
감사합니다
잘 쓸께요.

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

o
6년 전

깨지는 이유는 wr_link2 가 null 이기 때문입니다 

</p>

<p>$attendance = date("H:i",$data[wr_link1]);

$closing = date("H:i",$data[wr_link2]); </p>

<p> </p>

<p>//근무시간구하기

$date1 = $data[wr_link2]; 

$date2 = $data[wr_link1]; 

여기부분을

 

</p>

<p>$attendance = date("H:i",$data[wr_link1]);

$data[wr_link2]=intval($data[wr_link2]); //추가를 하시면됩니다 

$closing = date("H:i",$data[wr_link2]); </p>

<p>//근무시간구하기

$date1 = $data[wr_link2]; 

$date2 = $data[wr_link1]; </p>

<p>

 

메모추가부분은 

280라인에 추가부분을 추가하시고요 

</p>

<p>if($ck_today) {

    // 출근시간 버튼

    if($data[wr_link1]){

        //$attendance = date("H:i",$data[wr_link1]);

        //퇴근시간 버튼

            if(!$data[wr_link2]) $closing = "<a href=\"$write_href&close=1&wr_id2=$data[wr_id]\"><img src=$board_skin_url/images/btn_insert.gif style='cursor:hand;' border=0></a>";

            //else $closing = date("H:i",$data[wr_link2]);

            //================================

            //여기부분 추가 

            $wr_3=str_replace("'", "", $data[wr_3]);

            $wr_3_view=(($wr_3)?"
":"").$wr_3;

            $memo= "
<a href=\"javascript:memo_write('{$write_href}&close=2&wr_id2=$data[wr_id]', '".$wr_3."');\">[메모등록]</a>{$wr_3_view}";

            //================================

    }else{

        $attendance = "<a href=\"$write_href\"><img src=$board_skin_url/images/btn_insert.gif style='cursor:hand;' border=0></a>";

        $closing = "<img src=$board_skin_url/images/btn_insert.gif style='cursor:hand;' onclick='alert(\"출근시간이 없습니다.\")'>";    

    }

}

 

제일 하단에 아래를 넣어주시고요 

</p>

<p><script type="text/javascript">

<!--

    function memo_write(href, msg){

        var inputString = prompt('메모를 입력하세요', msg);

        inputUri = encodeURI(inputString);

        location.href=href+"&wr_3="+inputUri;

    }

//-->

</script></p>

<p>

 

write.skin 을 아래와 같이 변경하시면 됩니다 

</p>

<p><?

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

if($_GET['close']==2){//메모추가

    if($wr_3){

        $wr_3=urldecode($wr_3);

    }

    $sql = " update $write_table

                set wr_3 = '{$wr_3}'

                where wr_id = '$_GET[wr_id2]' ";

}

else if($_GET['close']){

    $sql = " update $write_table

                set wr_link2 = UNIX_TIMESTAMP()

                where wr_id = '$_GET[wr_id2]' ";

}</p>

<p>else{

    $sql = " insert into $write_table

                set wr_link1 = UNIX_TIMESTAMP(),

                    mb_id = '$member[mb_id]',

                    wr_password = '$g5[his]',

                    wr_name = '$member[mb_name]',

                    wr_datetime = '".G5_TIME_YMDHIS."',

                    wr_last = '".G5_TIME_YMDHIS."',

                    wr_ip = '$_SERVER[REMOTE_ADDR]'";

}

sql_query($sql);

//echo $sql ;

//exit;

goto_url(G5_URL."/bbs/board.php?bo_table=".$bo_table);

?></p>

<p>

 

 

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

답변에 대한 댓글 3개

시엔라이프
6년 전
감사합니다.
이렇게 성의 있게 답을 달아 주셔서
너무 고맙습니다.
먼저 인사 드리고
적용해 보겠습니다. ㅎㅎㅎ
시엔라이프
6년 전
출근시간 클릭해도 깨지는 것 없이 깔끔하게 처리 되니 너무 좋네요.
그런데 부탁드린 [메모등록] 무슨 이유인지
화면에 출력이 안되요.
242757204_1547398653.4208.png

http://bbmask.net/bbs/board.php?bo_table=attendance

여기 이고요.
임시 권한 ID : test pass : test
입니다.
기왕 주신 기능기부 다시 한번 더 살펴 주시면 고맙겠습니다.
시엔라이프
6년 전
하나만 더 사정해 봅니다.
[메모등록]를 한 회원만 포인트를 주려고 합니다.
한번 만 더 만져 주시면 감사하겠습니다.

그리고
<script type="text/javascript">
<!--
function memo_write(href, msg){
var inputString = prompt('메모를 입력하세요', msg);
inputUri = encodeURI(inputString);
location.href=href+"&wr_3="+inputUri;
}
//-->
</script>
적용이 안되는 것 같아요.
메모 없어도 걍 넘어가 버리네요.

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

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

로그인