관리자페이지 문의드립니다.
본문
상단에 이렇게
만들어져 있는 문의관리 페이지에서
기간별로 볼수있게 만들고 싶은데
게시판으로 만들어져 있거든요
항상 날짜를 기준으로 해서
오늘 : ??개
1주일 : ??개
1개월 : ??개
이렇게 표시를 하고 싶습니다
(누르면 해당 건만 리스트 나오게)
답변 4
커스텀으로 만든 '문의관리' 페이지인 것으로 보입니다.
참고용 소스입니다. (적용시에는 실제 페이지에 맞게 응용/처리 필요)
<?php
// 상단에 통계 표시 부분
$today_count = sql_fetch(" SELECT COUNT(*) AS cnt FROM {$write_table} WHERE wr_datetime >= '".date('Y-m-d 00:00:00')."' AND wr_datetime <= '".date('Y-m-d 23:59:59')."' ");
$week_count = sql_fetch(" SELECT COUNT(*) AS cnt FROM {$write_table} WHERE wr_datetime >= DATE_SUB(NOW(), INTERVAL 7 DAY) ");
$month_count = sql_fetch(" SELECT COUNT(*) AS cnt FROM {$write_table} WHERE wr_datetime >= DATE_SUB(NOW(), INTERVAL 1 MONTH) ");
?>
<div class="stat-container">
<a href="?period=today" class="stat-box">
오늘 : <?php echo number_format($today_count['cnt']); ?>개
</a>
<a href="?period=week" class="stat-box">
1주일 : <?php echo number_format($week_count['cnt']); ?>개
</a>
<a href="?period=month" class="stat-box">
1개월 : <?php echo number_format($month_count['cnt']); ?>개
</a>
</div>
<?php
// 리스트 쿼리 수정 부분
$period = $_GET['period'];
$where = "";
if($period) {
switch($period) {
case 'today':
$where = " AND wr_datetime >= '".date('Y-m-d 00:00:00')."' AND wr_datetime <= '".date('Y-m-d 23:59:59')."' ";
break;
case 'week':
$where = " AND wr_datetime >= DATE_SUB(NOW(), INTERVAL 7 DAY) ";
break;
case 'month':
$where = " AND wr_datetime >= DATE_SUB(NOW(), INTERVAL 1 MONTH) ";
break;
}
}
$sql = " SELECT * FROM {$write_table} WHERE 1=1 {$where} ORDER BY wr_id DESC ";
?>
"신청날짜" 기준으로 select 하는 query 를 만드세요.
sql where 구문에 관해서 공부해 보세요.
'문의 관리' 페이지의 상단에
"오늘", "1주일", "1개월"로 구분된 데이터 통계와 필터링 기능을 추가.
각 기간의 통계를 클릭하면 해당 기간에 해당하는 데이터만 리스트로 출력되게 함.
데이터는 PHP와 SQL로 처리하며,
HTML과 JavaScript를 사용하여 사용자 인터페이스를 동적으로 구성함.
상담신청 폼 구조를 참고하여 디자인 및 동작 방식을 통합함.
*HTML 및 JavaScript (통계 표시 및 필터링 UI 구성)
<div class="inquiry-stat-container">
<div class="stat-top flex">
<div class="stat-box">
<a href="?period=today">오늘: <span id="today-count">0</span>개</a>
</div>
<div class="stat-box">
<a href="?period=week">1주일: <span id="week-count">0</span>개</a>
</div>
<div class="stat-box">
<a href="?period=month">1개월: <span id="month-count">0</span>개</a>
</div>
</div>
</div>
<script>
// 통계 데이터를 동적으로 로드하는 스크립트
document.addEventListener("DOMContentLoaded", function () {
fetch('/bbs/get_statistics.php')
.then(response => response.json())
.then(data => {
document.getElementById('today-count').textContent = data.today;
document.getElementById('week-count').textContent = data.week;
document.getElementById('month-count').textContent = data.month;
});
});
</script>
*서버 측 PHP 코드 (기간별 통계 데이터 처리)
- get_statistics.php를 통해 각 기간에 대한 데이터를 계산
<?php
header('Content-Type: application/json');
// 데이터베이스 연결
include_once('db_connection.php');
// 오늘, 1주일, 1개월 데이터 계산
$today_count = sql_fetch("SELECT COUNT(*) AS cnt FROM inquiry_table WHERE created_at >= CURDATE()");
$week_count = sql_fetch("SELECT COUNT(*) AS cnt FROM inquiry_table WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)");
$month_count = sql_fetch("SELECT COUNT(*) AS cnt FROM inquiry_table WHERE created_at >= DATE_SUB(NOW(), INTERVAL 1 MONTH)");
// JSON으로 반환
echo json_encode([
'today' => $today_count['cnt'],
'week' => $week_count['cnt'],
'month' => $month_count['cnt']
]);
?>
*PHP로 필터링된 리스트 출력
- inquiry_list.php 파일에서 $_GET['period'] 값을 기준으로 필터링 조건을 설정
<?php
$period = $_GET['period'] ?? 'all'; // 기본값 설정
$where = "";
switch ($period) {
case 'today':
$where = "created_at >= CURDATE()";
break;
case 'week':
$where = "created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)";
break;
case 'month':
$where = "created_at >= DATE_SUB(NOW(), INTERVAL 1 MONTH)";
break;
}
$sql = "SELECT * FROM inquiry_table WHERE $where ORDER BY created_at DESC";
$result = mysqli_query($conn, $sql);
?>
<table class="table">
<thead>
<tr>
<th>번호</th>
<th>이름</th>
<th>연락처</th>
<th>신청일</th>
</tr>
</thead>
<tbody>
<?php while ($row = mysqli_fetch_assoc($result)): ?>
<tr>
<td><?= $row['id'] ?></td>
<td><?= htmlspecialchars($row['wr_name']) ?></td>
<td><?= htmlspecialchars($row['wr_subject']) ?></td>
<td><?= htmlspecialchars($row['created_at']) ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
*CSS 스타일링
- 폼 구조를 고려해, 통계 UI와 리스트 디자인을 조화롭게 구성
<style>
.inquiry-stat-container {
padding: 10px;
background-color: #f9f9f9;
border: 1px solid #ddd;
}
.stat-top {
display: flex;
justify-content: space-around;
}
.stat-box a {
text-decoration: none;
color: #007bff;
font-size: 16px;
font-weight: bold;
}
.stat-box a:hover {
text-decoration: underline;
}
.table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.table th, .table td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
.table th {
background-color: #f2f2f2;
}
</style>
★ 위의 방안은 상담신청 폼의 이미지(첨부된)와 AI를 활용하여
상단 통계 표시와 기간별 필터링 기능을 통합한 예시입니다.
!-->!-->!-->!-->
답변을 작성하시기 전에 로그인 해주세요.