한번 다운로드한 것 포인트 차감 없도록 정보
일반 한번 다운로드한 것 포인트 차감 없도록본문
아래는 제가 한번 만들어 본 것인데요.
////////////////////////// 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
위와 같은 메시지를 출력합니다.
무엇이 잘못되어 있는지 궁금합니다.
이게 해셜되야 만들 스킨 배포하는데..헐..어렵네요. 퇴근후..몇시간을 끙끙댔는데..
밤 한시가 되도록 해결 못하고 있네요..
댓글 전체
저도 count(*) 부분을 wr_id 로 고치고
if (!$row[wr_id]) 로 고쳐서 해결 했어요.. :)
황제닷컴님 똘이아빠님 감사합니다.
어제 이거때문에 날 꼬박 새고 오늘 사무실에서 이거 해결하느라..으구..진작에
물어볼껄그랬네요..
if (!$row[wr_id]) 로 고쳐서 해결 했어요.. :)
황제닷컴님 똘이아빠님 감사합니다.
어제 이거때문에 날 꼬박 새고 오늘 사무실에서 이거 해결하느라..으구..진작에
물어볼껄그랬네요..
제가 알기로 G4에는 배열에 숫자를 안쓰고 첨자를 쓰는 것으로 알고 있습니다.
select count(*) as cnt .......
if (!$row[cnt]) ..... → 이렇게 바꿔보세요.
select count(*) as cnt .......
if (!$row[cnt]) ..... → 이렇게 바꿔보세요.
문제는... $row[0] 가 안잡힌다는 건데요. 살짝 돌아가면 잡히네요.
혜심님 코드대로 하면, echo $row[0]; 찍어봐도 안나오거든요.
=================================
$sql = "....................";
$ttt = sql_query($sql);
$row=mysql_fetch_row($ttt);
=================================
이런 식으로 돌려주니까 $row[0] 가 잡힙니다. 이게 문제였다면 좋겠네요.
혜심님 코드대로 하면, echo $row[0]; 찍어봐도 안나오거든요.
=================================
$sql = "....................";
$ttt = sql_query($sql);
$row=mysql_fetch_row($ttt);
=================================
이런 식으로 돌려주니까 $row[0] 가 잡힙니다. 이게 문제였다면 좋겠네요.
제 생각엔 $row[0]이 널(null) 값을 가지기 때문에 널문자를 체크하는 것 같으므로
!row[0]이 맞긴 만는 것 같은데..
// 이미 다운로드 받은것인지?
$sql = " select count(*) from $point_table
where wr_id = '$wr_id'
and mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
부분에서 잘 못되었다는 생각이 드는데. 음..모르겠네요..
고수님들 부탁좀..^^
!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) 아닐까 싶은데...요.
if ($row[0]==0) 아닐까 싶은데...요.
$point_table = "g4_down_{$bo_table}_once";
// 테이블 생성
$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 명령에서 에러가 나네요..
// 테이블 생성
$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 명령에서 에러가 나네요..