관리자페이지 문의드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
관리자페이지 문의드립니다.

QA

관리자페이지 문의드립니다.

답변 4

본문

상단에 이렇게

만들어져 있는 문의관리 페이지에서

기간별로 볼수있게 만들고 싶은데

게시판으로 만들어져 있거든요

항상 날짜를 기준으로 해서

 

오늘 : ??개

1주일 : ??개
1개월 : ??개

 

이렇게 표시를 하고 싶습니다

(누르면 해당 건만 리스트 나오게)

 

1039617957_1737458641.6773.png

이 질문에 댓글 쓰기 :

답변 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 ";
?>

'문의 관리' 페이지의 상단에

"오늘", "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를 활용하여

  상단 통계 표시와 기간별 필터링 기능을 통합한 예시입니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로