5) { sleep(1); header("Location:" . $WebSite . "login/login_form.php"); exit; } include $_SERVER['DOCUMENT_ROOT'] . '/load_header.php'; $title_message = '업무용승용차 운행기록부'; ?> <?=$title_message?> query($car_sql); $car_list = $car_stmh->fetchAll(PDO::FETCH_ASSOC); $tablename = 'juilcarlog'; // 현재 날짜 $currentDate = date("Y-m-d"); // fromdate 또는 todate가 빈 문자열이거나 null인 경우 if ($fromdate === "" || $todate === "" ) { // $fromdate = date("Y-m-d", strtotime("-4 weeks", strtotime($currentDate))); // 1주일 전 $fromdate = date("Y-m-01"); // $fromdate = $currentDate; // $todate = $currentDate; // 현재 날짜 $todate = date("Y-m-t"); // 현재 월의 마지막 날 } require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php"); $pdo = db_connect(); $order_by = "ORDER BY l.use_date DESC, l.num DESC"; // 1. 테이블 컬럼 목록 가져오기 $column_query = "SHOW COLUMNS FROM " . $DB . "." . $tablename; $column_stmh = $pdo->query($column_query); $columns = $column_stmh->fetchAll(PDO::FETCH_COLUMN); // 2. SQL 기본 구조 (날짜 범위 필터링 추가) $sql = "SELECT l.*, IFNULL(c.initial_distance, 0) as initial_distance, (IFNULL(c.initial_distance, 0) + ( SELECT IFNULL(SUM(l2.driving_distance), 0) FROM " . $DB . ".juilcarlog l2 WHERE l2.car_number = l.car_number AND l2.is_deleted = 0 AND l2.num <= l.num )) as total_cumulative_distance FROM ".$DB.".".$tablename." l LEFT JOIN ".$DB.".juilcar c ON l.car_number = c.vehicle_number WHERE l.is_deleted = 0 AND l.use_date BETWEEN :fromdate AND :todate"; // 3. 검색어가 있을 경우 모든 컬럼에서 검색 (각 컬럼별 LIKE 추가) $bindParams = []; if (!empty($search)) { $searchConditions = []; foreach ($columns as $index => $col) { $paramName = ":search" . $index; $searchConditions[] = "l.$col LIKE $paramName"; $bindParams[$paramName] = "%{$search}%"; } $sql .= " AND (" . implode(" OR ", $searchConditions) . ")"; } $sql .= " " . $order_by; // print $sql; try { $stmh = $pdo->prepare($sql); // 4. 바인딩 (날짜 범위) $stmh->bindValue(":fromdate", $fromdate, PDO::PARAM_STR); $stmh->bindValue(":todate", $todate, PDO::PARAM_STR); // 5. 바인딩 (검색어: 각 컬럼별 LIKE 검색 적용) foreach ($bindParams as $paramName => $paramValue) { $stmh->bindValue($paramName, $paramValue, PDO::PARAM_STR); } $stmh->execute(); $total_row = $stmh->rowCount(); ?>
차량별 주행거리 요약 ()
✔ 각 행 클릭시 목적별 상세내역이 나옵니다.
= 1 GROUP BY c.vehicle_number, c.responsible_person, c.vehicle_type, c.initial_distance, m.part, m.position HAVING (IFNULL(c.initial_distance, 0) + ( SELECT IFNULL(SUM(l2.driving_distance), 0) FROM " . $DB . ".juilcarlog l2 WHERE l2.car_number = c.vehicle_number AND l2.is_deleted = 0 )) >= 10 ORDER BY c.manufacturing_date ASC, c.purchase_date ASC"; $summary_stmh = $pdo->prepare($summary_sql); $summary_stmh->bindValue(":fromdate", $fromdate, PDO::PARAM_STR); $summary_stmh->bindValue(":todate", $todate, PDO::PARAM_STR); $summary_stmh->execute(); $summary_list = $summary_stmh->fetchAll(PDO::FETCH_ASSOC); foreach ($summary_list as $summary): ?>
사용자명 부서 직위 차종 차량번호 기간(월)주행거리 총누적주행거리
  기간  
기간 설정
  ~       
fetch(PDO::FETCH_ASSOC)) { include '_row.php'; ?> getMessage(); } ?>
번호 사용일자 차량번호 부서 직책 사용자 사용목적 운행내역 출발지 도착지 주행거리 월간 누적거리 총 누적거리 비고