한번 다운로드한 것 포인트 차감 없도록 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

한번 다운로드한 것 포인트 차감 없도록 정보

일반 한번 다운로드한 것 포인트 차감 없도록

본문

아래는 제가 한번 만들어 본 것인데요.

////////////////////////// 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]) 로 고쳐서 해결 했어요.. :)

황제닷컴님 똘이아빠님 감사합니다.

어제 이거때문에 날 꼬박 새고 오늘 사무실에서 이거 해결하느라..으구..진작에

물어볼껄그랬네요..
제가 알기로 G4에는 배열에 숫자를 안쓰고 첨자를 쓰는 것으로 알고 있습니다.

select count(*) as cnt .......

if (!$row[cnt]) .....  → 이렇게 바꿔보세요.
문제는... $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);

부분에서 잘 못되었다는 생각이 드는데. 음..모르겠네요..

고수님들 부탁좀..^^
$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 명령에서 에러가 나네요..
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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