[PHP] 쿠폰 발행

PHP 2009. 4. 18. 21:03





  1. DB에 발행할 쿠폰수만큼 번호를 생성해둔다. (해당 쿠폰을 발행받은 ID는 비워둔다) [! 쿠폰유효기간도 필요하지 않을까??? !]
  2. 쿠폰을 발행할 때 ID가 비어있는 쿠폰번호를 발행한다. [! 예약된 쿠폰번호라는 것도 필요할 듯 하다!! ID 부분을 reserved 하는 형식으로 저장하든지 해서] 
  3. 쿠폰을 사용할 때 DB에서 해당 쿠폰번호가 있는지, 이미 발행받은 ID가 있는지 검사하여 모두 통과되면 member 테이블의 쿠폰기간 필드를 업데이트 한다.

 

 

DB는 할때마다 생성하고 비우고 하는 형식으로 사용하면 될 듯 함.

 

DB

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 ;

idx: 고유 인덱스 번호

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

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

 

 

 

쿠폰생성 소스

 

<?
$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;
}

?> 













'PHP' 카테고리의 다른 글

charset  (0) 2009.04.18
쿠폰번호 발행 2  (0) 2009.04.18
PHP Help for EditPlus (에디트 플러스 PHP 헬프)  (0) 2009.04.18
HTTP 에러코드  (0) 2009.04.18
에디트플러스에서 PHP 온라인 도움말 연결하기  (0) 2009.04.18
Posted by bloodguy
,