묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
조회수를 구현하려면?
2003.04.21 21:20
안녕하세요?
다름이 아니라 제가 페이지를 하나 만들고
사람들이 그 페이지를 볼때마다 게시판의 조회수처럼 1씩 올라가야 되거든요.
상당히 간단할 것 같은데 어떻게 해야 하나요?
참고로 ip나 쿠키와 같은것은 상관 없고요. 그냥 봤던 사람이 또 봐도 1씩 올라가면 됩니당..^^;;
php가 지원되는데... 어떻게 소스를 집어넣으면 되는지요?
저 바보같져..? -_-;;;
하나도 몰라서요^^ 부탁드립니다.
다름이 아니라 제가 페이지를 하나 만들고
사람들이 그 페이지를 볼때마다 게시판의 조회수처럼 1씩 올라가야 되거든요.
상당히 간단할 것 같은데 어떻게 해야 하나요?
참고로 ip나 쿠키와 같은것은 상관 없고요. 그냥 봤던 사람이 또 봐도 1씩 올라가면 됩니당..^^;;
php가 지원되는데... 어떻게 소스를 집어넣으면 되는지요?
저 바보같져..? -_-;;;
하나도 몰라서요^^ 부탁드립니다.
댓글 6
-
JuDe
2003.04.21 22:14
-
특급잠수부
2003.04.21 23:19
태클은 아니지만 1개의 컬럼만을 가지는 테이블은 어떻게 보면 무의미하다고 보는데요
파일형식의 카운터를 응용해서 하는것이 낳을것 같습니다.
그리고 카운터 테이블에 auto_increment는 -_- 빼셔야 합니다..
그리고 fetch_row는 배열로 받아오므로
Array <-- 이게 아마도 뜰듯한데요..
DB로 할려면
create table tbl_count(
view_cnt int(10) unsigned not null
);
로 하시고
페이지 상단부에
<?
$up_q = "update tbl_count set view_cnt = view_cnt + 1";
mysql_query($up_q,$conn) or die (mysql_error());
$sel_q = "select * from tbl_count";
$sel_s = mysql_query($sel_q,$conn) or die (mysql_error());
$sr = mysql_fetch_array($sel_s);
echo $sr[view_cnt]; // 조회수 출력
?>
// 파일형식
먼저 조회수를 저장할 txt파일을 만들고 퍼미션을 777로 줍니다.
이 파일의 절대경로가 /home/test/public_html/count.txt면
<?
$file_src = "/home/test/public_html/count.txt";
$fp = @fopen($file_src,"w");
$content = fread($fp,filesize($file_src));
$view_cnt = (int)$content + 1;
@fwrite($fp,$view_cnt);
fclose($fp);
echo $view_cnt; // 카운터 출력
?>
하시면 될듯합니다. -
JuDe
2003.04.22 01:23
어차피 카운터가 새로고침 만으로 업데이트 되기 때문에 파일핸들링을 해서 좋을게 없다는 생각으로
하나의 필드만 넣었다면 말이 안되나요?
음 말을 듣고 보니 습관적으로 auto_increment 를 붙였네요
그리고 마지막에도 잠수부님 말씀처럼 echo "$counter"; 이 아니라 echo "$counter[0]"; 으로 고쳐져야 됩니다.
파일형식으로 할꺼라면
<? $view_cnt='1234'; ?>
형식의 count.php 로 저장해서 include 시키는건 어떤지요. -
특급잠수부
2003.04.22 09:04
include하더라도 저 변수값을 증가시키는게 필요합니다.
따라서 파일형식 카운터처럼 파일 핸들링이 필요하죠.
데이터베이스 connect -> 조회수 update -> 데이터베이스 close
파일 open -> 조회수 update -> 파일 close
똑같은 원리입니다. -
Nine™
2003.04.23 06:43
단순히 숫자만 들어간다면 파일이 가장 빠릅니다.
단지 파일은 쓰기와 읽기가 빈번하다면 깨지는 경우가 간혹 있습니다.
물론 몇바이트짜리 파일이라면 순식간이라 별거 아니지요.
깨지는걸 방지하기 위해서 파일락이 필수..!
근데 JuDe님 mysql_query에 커넥트 변수가 없네요.
파일을 읽기, 쓰기하려면 w가 아니라 w+해야합니다.
그리고 파일퍼미션은 666으로 해도 무난하지 않나요..? -
특급잠수부
2003.04.23 09:23
Nine님 말씀처럼 퍼미션 666으로 해도 됩니다.
fopen 에서 w나 w+ 인자는 파일포인터가 제일 앞에 위치하고 파일크기 0으로 만들어서
안 읽어오는건지 애매하네요...
<?
$file_src = "/home/test/public_html/count.txt";
$fp = @fopen($file_src,"r");
$content = fread($fp,filesize($file_src));
$view_cnt = (int)$content + 1;
$fp2 = @fopen($file_src,"w");
@fwrite($fp2,$view_cnt);
echo $view_cnt; // 카운터 출력
?>
수정소스..
조회수를 보여줄 때에는 파일로 저장하는 것이 좀 더 나을것 같군요.
조회수를 + 해줄때에는 DB가 낳을것 같기도 하구요.
DB를 기준으로 설명 드리겠습니다.
테이블을 하나 만듭니다.
create table page_counter (
counter int(10) unsigned default '0' NOT NULL auto_increment
primary_key(counter)
)
아주간단하게 카운터라는 필드 하나만 생성했습니다.
적용시키려는 페이지에 다음을 삽입합니다.
<?
$update_query=mysql_query("update page_counter set counter=counter+1"); // 접속하면 카운터에 +1을 하는 부분입니다.
$view_query=mysql_query("select * from page_counter"); //카운터를 가져오는 부분
$counter=mysql_fetch_row($view_query);
echo "$counter"; // 출력되는 카운터입니다.
?>