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

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

QA

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

본문

상단에 이렇게

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

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

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

항상 날짜를 기준으로 해서

 

오늘 : ??개

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를 활용하여

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

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT