[ php ] 쿠폰발행 > php

본문 바로가기

사이트 내 전체검색

php

[ php ] 쿠폰발행

작성일 18-09-27 16:08

페이지 정보

작성자 웹지기 조회 5,076회 댓글 0건

본문

DB

[code]

CREATE TABLE `coupon_test` (

  `idx` int(11) NOT NULL auto_increment,

  `couponNO` varchar(16) NOT NULL,

  `ID` varchar(20) default NULL,

  PRIMARY KEY  (`idx`)

) ENGINE=MyISAM DEFAULT CHARSET=euckr AUTO_INCREMENT=1 ;

[/code]


idx: 고유 인덱스 번호 

couponNO: 쿠폰번호 (중복불가 varchar(16) 숫자와 알파벳으로 이루어짐) 

ID: 해당 쿠폰을 사용한(발급받은) ID. ID를 입력할 수 없는 경우에는 reserved 라고 표기해 두어 중복발급을 피하도록 한다. 


쿠폰생성 소스

[code]

<?

$Host    = "호스트주소";  

$User    = "DB 

ID";  

$Passwd    = "DB PASSWORD"; 

$DB_Name   = "DB NAME"; 

// 쿠폰발행을 위한 배열. 숫자+알파벳 

$arr_no=array("1","2","3","4","5","6","7","8","9","0");

$arr_alphabet=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");


// DB 접속

$dbconn = mysql_connect("$Host","$User","$Passwd") or die("데이터베이스 연결에 실패하였습니다.");

$status = mysql_select_db("$DB_Name",$dbconn);


// 쿠폰발행 루프 (10000개의 번호를 생성한다고 가정) 

$x=0;

while ($x<10000){

    $str="";

    // 쿠폰번호의 길이는 숫자+알파벳으로 16자 (물론 조정가능)

    for ($i=0; $i<16; $i++) {

        // 랜덤을 돌려 0 이면 숫자, 1 이면 알파벳 부여

        if (rand(0,1)==0) 

            $str.=$arr_no[rand(0,(count($arr_no)-1))];

        else

            $str.=$arr_alphabet[rand(0,(count($arr_alphabet)-1))];

    }


    // 해당 번호가 DB 있는 중복번호인가 체크 

    $query = "select count(idx) 

    from coupon_test where couponNO='".$str."'";

    $result = mysql_query($query, $dbconn);

    $col = mysql_fetch_row($result);


    // 중복번호가 아니라면 DB 에 넣음 

    if ($col[0]==0) {

        $query = "insert into 

        coupon_test VALUES ('', '".$str."' ,'')"; 

        $result = mysql_query($query, 

        $dbconn);

        echo $str."<br>";

        $x++;

    }

    // 중복번호라면 다시

    else 

        continue;

}

?>

[/code]


1.DB에 발행할 쿠폰수만큼 번호를 생성해둔다.(자동생성되게 해야지 이런건) (해당 쿠폰을 발행받은 ID는 비워둔다) [! 쿠폰유효기간도 필요하지 않을까??? !] 

2.쿠폰을 발행할 때 ID가 비어있는 쿠폰번호를 발행한다. [! 예약된 쿠폰번호라는 것도 필요할 듯 하다!! ID 부분을 reserved 하는 형식으로 저장하든지 해서] 

3.쿠폰을 사용할 때 DB에서 해당 쿠폰번호가 있는지, 이미 발행받은 ID가 있는지 검사하여 모두 통과되면 member 테이블의 쿠폰기간 필드를 업데이트 한다. 


추천0

비추천 0

댓글목록

등록된 댓글이 없습니다.

전체 82건 5 페이지

이미지 목록

게시물 검색
Copyright © 즐거운 코딩 생활 ( funyphp ). All rights reserved.
PC 버전으로 보기