한번 다운로드한 것 포인트 차감 없도록
아래는 제가 한번 만들어 본 것인데요.
////////////////////////// download.php 일부분 /////////////////////////////////////////
$download = "g4_down_{$bo_table}_once";
// 테이블 생성
$sql = " CREATE TABLE `$download` (
`wr_id` INT NOT NULL ,
`mb_id` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `wr_id` , `mb_id` ) )";
@mysql_query($sql);
$download = "g4_down_{$bo_table}_once";
// 이미 다운로드 한 것인지 여부
$sql = " select count(*) from $download where wr_id = '$wr_id' and mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
if (!$row[0]) {
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id {$index}번 파일 다운로드");
// 다운로드 표시 남기기
$sql = " insert $download
set wr_id = '$wr_id',
mb_id = '$member[mb_id]' ";
sql_query($sql);
set_session($ss_name, TRUE);
} //row
//////////////////////////////////////////////////////////////////////////////
첫번째 다운로드 하면 테이블생성이 잘 되고,
생성된 테이블에 인서트까지 잘 됩니다.
그리고, 두번째 다운을 할 때, if (!$row[0]) 이부분에서 걸려서
포인트차감부분이 실행이 안되어야 하는데.
그냥 실행이 되면서 두번 insert 할 수 없다는
insert g4_down_freeboard2_once set wr_id = '18', mb_id = 'test'
1062 : 중복된 입력 값 '18-test': key 1
error file : /g4/bbs/download.php
위와 같은 메시지를 출력합니다.
무엇이 잘못되어 있는지 궁금합니다.
이게 해셜되야 만들 스킨 배포하는데..헐..어렵네요. 퇴근후..몇시간을 끙끙댔는데..
밤 한시가 되도록 해결 못하고 있네요..
////////////////////////// download.php 일부분 /////////////////////////////////////////
$download = "g4_down_{$bo_table}_once";
// 테이블 생성
$sql = " CREATE TABLE `$download` (
`wr_id` INT NOT NULL ,
`mb_id` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `wr_id` , `mb_id` ) )";
@mysql_query($sql);
$download = "g4_down_{$bo_table}_once";
// 이미 다운로드 한 것인지 여부
$sql = " select count(*) from $download where wr_id = '$wr_id' and mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
if (!$row[0]) {
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id {$index}번 파일 다운로드");
// 다운로드 표시 남기기
$sql = " insert $download
set wr_id = '$wr_id',
mb_id = '$member[mb_id]' ";
sql_query($sql);
set_session($ss_name, TRUE);
} //row
//////////////////////////////////////////////////////////////////////////////
첫번째 다운로드 하면 테이블생성이 잘 되고,
생성된 테이블에 인서트까지 잘 됩니다.
그리고, 두번째 다운을 할 때, if (!$row[0]) 이부분에서 걸려서
포인트차감부분이 실행이 안되어야 하는데.
그냥 실행이 되면서 두번 insert 할 수 없다는
insert g4_down_freeboard2_once set wr_id = '18', mb_id = 'test'
1062 : 중복된 입력 값 '18-test': key 1
error file : /g4/bbs/download.php
위와 같은 메시지를 출력합니다.
무엇이 잘못되어 있는지 궁금합니다.
이게 해셜되야 만들 스킨 배포하는데..헐..어렵네요. 퇴근후..몇시간을 끙끙댔는데..
밤 한시가 되도록 해결 못하고 있네요..
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 6개
if (!$row[wr_id]) 로 고쳐서 해결 했어요.. :)
황제닷컴님 똘이아빠님 감사합니다.
어제 이거때문에 날 꼬박 새고 오늘 사무실에서 이거 해결하느라..으구..진작에
물어볼껄그랬네요..
select count(*) as cnt .......
if (!$row[cnt]) ..... → 이렇게 바꿔보세요.
혜심님 코드대로 하면, echo $row[0]; 찍어봐도 안나오거든요.
=================================
$sql = "....................";
$ttt = sql_query($sql);
$row=mysql_fetch_row($ttt);
=================================
이런 식으로 돌려주니까 $row[0] 가 잡힙니다. 이게 문제였다면 좋겠네요.
!row[0]이 맞긴 만는 것 같은데..
// 이미 다운로드 받은것인지?
$sql = " select count(*) from $point_table
where wr_id = '$wr_id'
and mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
부분에서 잘 못되었다는 생각이 드는데. 음..모르겠네요..
고수님들 부탁좀..^^
if ($row[0]==0) 아닐까 싶은데...요.
// 테이블 생성
$sql = " CREATE TABLE `$point_table` (
`wr_id` INT NOT NULL ,
`mb_id` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `wr_id` , `mb_id` )
) ";
@mysql_query($sql);
// 이미 다운로드 받은것인지?
$sql = " select count(*) from $point_table
where wr_id = '$wr_id'
and mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
if (!$row[0]) {
// 다운로드한 회원은 포인트가 줄고, 글쓴 회원은 포인트가 늘어남
if ($write[mb_id])
$mb = get_member($write[mb_id]);
// 자신의 것이 아니라면
if ($mb[mb_id] != $member[mb_id]) {
$point = 100;
// 글읽는 회원의 포인트는 빼고
if ($member[mb_id]) {
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id {$index}번 파일 다운로드");
}
// 원글의 회원 포인트에 50% 만 더함
if ($mb[mb_id]) {
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id {$index}번 파일 다운로드");
}
// 읽은 표시 남기기
$sql = " insert $point_table
set wr_id = '$wr_id',
mb_id = '$member[mb_id]' ";
sql_query($sql);
}
}
이렇게 해도..insert 명령에서 에러가 나네요..