출석부 통계....
본문
이런 항목으로 통계를 내고 싶은데 어찌해야 할 까요...
이걸 매달 회원님이 통계 내주시고 계시는데 많이 힘들어 하시네요.. ㅠ.ㅠ
답변 3
아래의 내용을 참고를 해보세요
<?php
// 현재 날짜를 구합니다.
$currentDate = date('Y-m-d');
// 1년 전의 날짜를 계산합니다.
$oneYearAgo = date('Y-m-d', strtotime('-1 year'));
// 개근일수와 인원수를 저장할 변수를 초기화합니다.
$totalAttendanceDays = 0;
$totalMembers = 0;
// 회원 데이터를 가져오는 쿼리를 작성합니다. 적절한 쿼리를 사용해야 합니다.
$query = "SELECT * FROM members_table";
// 쿼리를 실행하여 회원 데이터를 가져옵니다. 적절한 데이터베이스 연결 및 실행 코드를 추가해야 합니다.
$result = mysqli_query($connection, $query);
// 결과를 순회하며 개근 현황을 계산합니다.
while ($row = mysqli_fetch_assoc($result)) {
// 회원의 개근일수를 계산합니다.
$attendanceDays = getAttendanceDays($row['join_date'], $oneYearAgo, $currentDate);
// 개근일수가 365일 이상인 경우에만 통계에 포함합니다.
if ($attendanceDays >= 365) {
$totalAttendanceDays += $attendanceDays;
$totalMembers++;
}
}
// 개근 현황 통계를 출력합니다.
echo "총 개근 일수: " . $totalAttendanceDays . "일<br>";
echo "총 인원 수: " . $totalMembers . "명";
// 개근일수를 계산하는 함수입니다.
function getAttendanceDays($joinDate, $startDate, $endDate) {
$start = strtotime($startDate);
$end = strtotime($endDate);
$join = strtotime($joinDate);
// 회원 가입일과 기간의 시작일 중 더 늦은 날짜를 선택합니다.
$start = max($start, $join);
// 시작일과 종료일 사이의 일수를 계산합니다.
$days = ($end - $start) / (60 * 60 * 24) + 1;
return $days;
}
?>
저렇게 뽑으실수 있으면 내부에 개발자가 있으신거 아닌가요?
mysql 에서 group by 로 통계를 내시면 될듯 합니다.
다만 개근이라는 데이터를 만들으셔야 할듯 합니다.