회원 방문자 집계관련 문의
본문
안녕하세요~
관리자 메인페이지에 회원 방문자 집계 그래프를 제작중에 있는데 궁금한 점이 있어 문의드립니다.
현재 신규방문자, 재방문자(회원) 이런식으로 해서 그래프 표현하려고 합니다.
신규방문자 집계 그래프는 구현이 가능합니다.
재방문자(회원) 로그인시에만 접속자로 인정해서 카운팅이 되게 하려고 하는데 이부분에서 막히는군요.
혹시 이부분은 어떻게 처리를 하면 되는지 고수님들의 도움을 얻고자 이렇게 문의 드립니다.
사용된 소스코드는 아래와 같습니다.
DB에 g5_visit 테이블에 mb_id 필드를 추가함
sql_query("ALTER TABLE g5_visit ADD mb_id VARCHAR(255) NOT NULL AFTER vi_device");
visit_insert.inc.php 파일 sql 쿼리문에 mb_id 추가함
$sql = " insert {$g5['visit_table']} ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent, vi_browser, vi_os, vi_device, mb_id ) values ( '{$vi_id}', '{$remote_addr}', '".G5_TIME_YMD."', '".G5_TIME_HIS."', '{$referer}', '{$user_agent}', '{$vi_browser}', '{$vi_os}', '{$vi_device}', '{$member['mb_id']}' ) ";
sql쿼리
<?php
$sql_common =" select mb_id, vi_date as cnt from {$g5['visit_table']} where mb_id between";
// 오늘
$sql = "$sql_common '" . date("Y-m-d") . "' and '" . date("Y-m-d") . " 23:59:59'";
$mb_result = sql_fetch($sql);
?>
//출력부분
<h3>신규 vs 재방문 (최근 7일)<a href=""></a></h3>
<div id="graph_wrap"></div>
<script>
Morris.Bar({
element: 'graph_wrap',
data: [
{ y: '<?php echo date("d일",strtotime("-6 days"));?>', a: <?php echo number_format($result_6['tot']);?>, b: 0},
{ y: '<?php echo date("d일",strtotime("-5 days"));?>', a: <?php echo number_format($result_5['tot']);?>, b: 0},
{ y: '<?php echo date("d일",strtotime("-4 days"));?>', a: <?php echo number_format($result_4['tot']);?>, b: 0},
{ y: '<?php echo date("d일",strtotime("-3 days"));?>', a: <?php echo number_format($result_3['tot']);?>, b: 0},
{ y: '<?php echo date("d일",strtotime("-2 days"));?>', a: <?php echo number_format($result_2['tot']);?>, b: 0 },
{ y: '<?php echo date("d일",strtotime("-1 days"));?>', a: <?php echo number_format($result_1['tot']);?>, b: 0},
{ y: '<?php echo date("오늘",strtotime("today"));?>', a: <?php echo number_format($result['tot']);?>, b: <?php echo number_format($mb_result ['cnt']);?> }
],
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['신규', '재방문']
});
</script>
</div>
위와 같이 했는데 적용이 되지 않더군요.. 어떻게 해야 할지 몰라서 이렇게 도움을 요청드립니다.
고수님들의 도움 부탁드리겠습니다.
오늘도 즐거운 하루 되세요^^
!-->!-->!-->답변 1
$sql 을 출력해보고 그대로 복사해 쿼리를 직접 날려봤을때 문제가 있다면 수정하고
다시 수정한 쿼리문에 맞춰 프로그램을 수정하는것도 방법입니다.
아래는 정리해본 내용이니 같이 확인해보시면 좋을것 같습니다.
문제점으로 보이는 부분
where mb_id between
between 절 뒤에 오는 부분은 datetime 형식인데 앞의 mb_id 가 datetime 형식인지 확인이 필요할것 같습니다.
묵시적 형태보다는 명시적 형태로
date("Y-m-d") . "' and '" . date("Y-m-d") . " 23:59:59'" // '2022-11-10' and '2022-11-10 23:59:59'
date("Y-m-d") . " 00:00:00' and '" . date("Y-m-d") . " 23:59:59'" // '2022-11-10 00:00:00' and '2022-11-10 23:59:59'
추가 필요해 보이는 부분
중복제거를 위한 쿼리문에서의 GROUP BY 라던가 DISTINCT 키워드의 사용
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.